mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-11 05:53:23 -05:00
230 lines
9.5 KiB
YAML
230 lines
9.5 KiB
YAML
emulator: Gargoyle
|
|
type: standalone
|
|
core_classification: game_engine
|
|
source: "https://github.com/garglk/garglk"
|
|
upstream: "https://github.com/garglk/garglk"
|
|
profiled_date: "2026-08-08"
|
|
source_commit: "5717fbf3f9d6f2341773d0cc03f19d96c463af72"
|
|
core_version: "2026.1"
|
|
display_name: "Interactive Fiction (Gargoyle)"
|
|
cores:
|
|
- gargoyle
|
|
systems:
|
|
- adrift
|
|
- advsys
|
|
- agt
|
|
- alan
|
|
- glulx
|
|
- hugo
|
|
- jacl
|
|
- level9
|
|
- magnetic-scrolls
|
|
- scott-adams
|
|
- scott-adams-plus
|
|
- tads
|
|
- taylormade
|
|
- zmachine
|
|
mode: standalone
|
|
|
|
notes: |
|
|
Interactive fiction player built on the Glk library implementation garglk,
|
|
shipping one interpreter binary per story format. The gargoyle binary reads
|
|
the first 32 bytes of the file, matches it against a magic-number table,
|
|
falls back to the extension, and executes the matching interpreter.
|
|
ref: launcher.cpp:100-177 (probe, extensions, interpreters), 379-419 (rungame)
|
|
|
|
Formats and the interpreter each one runs: Adrift 4 (scare), Adrift 5
|
|
(FrankenDrift), AdvSys (advsys), AGT (agility), Alan 2 (alan2), Alan 3
|
|
(alan3), Glulx (git), Hugo (hugo), JACL (jacl), Level 9 (level9), Magnetic
|
|
Scrolls (magnetic), Scott Adams Graphic Adventures Plus (plus), Scott Adams
|
|
(scott), TADS 2 and 3 (tadsr), TaylorMade (taylor), Z-machine (bocfel).
|
|
Blorb files are unwrapped first and dispatched on the Exec chunk type.
|
|
ref: launcher.cpp:45-60 (interpreter names), 276-328 (runblorb)
|
|
|
|
Adrift 5 needs the FrankenDrift runner, a .NET build option that is off by
|
|
default, including in the official AppImage. Without it the launcher reports
|
|
that Adrift 5 is unsupported and stops.
|
|
ref: CMakeLists.txt:63 (WITH_FRANKENDRIFT), gargoyle-appimage.sh:14,
|
|
launcher.cpp:160-162,202-206
|
|
|
|
Every glyph is drawn through FreeType rather than by the operating system,
|
|
so a font file has to be reachable. The default config asks for the families
|
|
"Gargoyle Mono" and "Gargoyle Serif"; if fontconfig cannot resolve them, the
|
|
interpreter loads the shipped TTF files by name from the data directory,
|
|
then the executable directory, then the working directory, and calls
|
|
winabort() when all three miss.
|
|
ref: garglk.h:661-662 (defaults), garglk.ini:195,198, fontfc.cpp:83-154
|
|
(fontconfig lookup), draw.cpp:260-287 (path fallbacks), 300-350
|
|
(make_font, abort), 490-498 (file names)
|
|
|
|
Gargoyle Serif is Charis SIL and Gargoyle Mono is Go Mono, both renamed so
|
|
they can be installed system-wide without clashing. Font embedding was
|
|
dropped because the OFL and the GPL do not mix, which is why the files are
|
|
loaded from disk.
|
|
ref: fonts/README
|
|
|
|
Data directory by platform: /usr/share/gargoyle on Unix,
|
|
<binary>/../share/gargoyle for the AppImage, the install directory on
|
|
Windows, and the bundle Resources directory on macOS. Fonts sit at its root
|
|
and themes in its themes subdirectory. macOS keeps the eight Gargoyle faces
|
|
in Resources/Fonts and Unifont in Resources; the Windows installer also
|
|
registers the eight faces as system fonts.
|
|
ref: sysqt.cpp:898-942, sysmac.mm:986-1003, garglk/CMakeLists.txt:136,144,
|
|
510-534, gargoyle_osx.sh:120-121,207-209, installer.nsi:89-90,200-207
|
|
|
|
Themes are read from every *.json in the theme directories, which are the
|
|
Qt application data locations plus the executable directory on Windows and
|
|
the data directory for the AppImage. A parse failure is reported and the
|
|
file skipped. The light and dark themes are also compiled into the binary,
|
|
so the on-disk copies of those two replace identical entries.
|
|
ref: theme.cpp:266-319, sysqt.cpp:920-942, garglk/CMakeLists.txt:80-92
|
|
|
|
garglk.ini is not distributed: the default config is compiled in as a string
|
|
and written to the highest-priority user location on demand. Installing a
|
|
system copy is an off-by-default build option.
|
|
ref: config.cpp:399-449, garglk/CMakeLists.txt:14 (INSTALL_GARGLKINI),
|
|
garglk/CMakeLists.txt:60-78 (vtk_encode_string)
|
|
|
|
MIDI in Blorb resources goes through FluidSynth, which needs a SoundFont.
|
|
Gargoyle names none: the soundfont list is empty unless the user sets it in
|
|
garglk.ini or the build hardcodes one, and the fallback is whatever
|
|
FluidSynth reports as its own default.
|
|
ref: config.cpp:245-249,787-795, snddecode.cpp:373-395,
|
|
garglk/CMakeLists.txt:57 (DEFAULT_SOUNDFONT), INSTALL.md:137-141
|
|
|
|
Story files are content. Formats that carry companion data read it from the
|
|
story file's own name or directory, so it travels with the game: Level 9
|
|
graphics as PICTURE.DAT, Magnetic Scrolls graphics and hints as .gfx and
|
|
.hnt, Alan 3 resources as .a3r, TADS resources as .t3r, and the extra disk
|
|
sides the Scott Adams, Plus and TaylorMade interpreters read from C64,
|
|
Atari 8-bit and Apple II images.
|
|
ref: level9/Glk/glk.c:6415-6450, magnetic/Glk/glk.c:5758-5855,
|
|
terps/CMakeLists.txt:69,73,359,404,500 (c64diskimage, unp64)
|
|
|
|
exclusion_note: >
|
|
TADS character mapping files are not loaded by this build. The Glk port
|
|
reports utf-8 and asc7dflt as the local character sets, both built-in
|
|
tables, and its os_gen_charmap_filename() returns an empty name, so the
|
|
automatic .tcp lookup never runs; cmap_load() only fires for a path given
|
|
with -ctab. The agil.cfg read by AGiliTy lives in os_dos.c and os_dos16.c,
|
|
while the build compiles os_glk.c.
|
|
ref: tads/glk/osmisc.c:69-72,316-334, tads/tads2/cmap.c:290-315,
|
|
tads/tads2/trd.c:513-517, terps/CMakeLists.txt:111-119
|
|
|
|
files:
|
|
# -- Text fonts, data directory root --
|
|
# Loaded by name when fontconfig cannot resolve the configured families.
|
|
# Gargoyle aborts when a face is available from neither source.
|
|
- name: "Gargoyle-Mono.ttf"
|
|
description: "Gargoyle Mono regular (Go Mono)"
|
|
required: true
|
|
source_ref: "draw.cpp:491 (make_entry monor), 300-350 (make_font, winabort)"
|
|
|
|
- name: "Gargoyle-Mono-Bold.ttf"
|
|
description: "Gargoyle Mono bold (Go Mono)"
|
|
required: true
|
|
source_ref: "draw.cpp:492 (make_entry monob), 300-350 (make_font, winabort)"
|
|
|
|
- name: "Gargoyle-Mono-Italic.ttf"
|
|
description: "Gargoyle Mono italic (Go Mono)"
|
|
required: true
|
|
source_ref: "draw.cpp:493 (make_entry monoi), 300-350 (make_font, winabort)"
|
|
|
|
- name: "Gargoyle-Mono-Bold-Italic.ttf"
|
|
description: "Gargoyle Mono bold italic (Go Mono)"
|
|
required: true
|
|
source_ref: "draw.cpp:494 (make_entry monoz), 300-350 (make_font, winabort)"
|
|
|
|
- name: "Gargoyle-Serif.ttf"
|
|
description: "Gargoyle Serif regular (Charis SIL)"
|
|
required: true
|
|
source_ref: "draw.cpp:495 (make_entry propr), 300-350 (make_font, winabort)"
|
|
|
|
- name: "Gargoyle-Serif-Bold.ttf"
|
|
description: "Gargoyle Serif bold (Charis SIL)"
|
|
required: true
|
|
source_ref: "draw.cpp:496 (make_entry propb), 300-350 (make_font, winabort)"
|
|
|
|
- name: "Gargoyle-Serif-Italic.ttf"
|
|
description: "Gargoyle Serif italic (Charis SIL)"
|
|
required: true
|
|
source_ref: "draw.cpp:497 (make_entry propi), 300-350 (make_font, winabort)"
|
|
|
|
- name: "Gargoyle-Serif-Bold-Italic.ttf"
|
|
description: "Gargoyle Serif bold italic (Charis SIL)"
|
|
required: true
|
|
source_ref: "draw.cpp:498 (make_entry propz), 300-350 (make_font, winabort)"
|
|
|
|
# -- Glyph substitution fonts, data directory root --
|
|
# Tried for every face after the main fonts; a load failure is skipped.
|
|
- name: "unifont.otf"
|
|
description: "GNU Unifont, Basic Multilingual Plane glyph fallback"
|
|
required: false
|
|
source_ref: "draw.cpp:352-375 (make_substitution_fonts), 476-478"
|
|
note: >
|
|
Covers glyphs missing from the text fonts. Loaded directly rather than
|
|
through the system font mechanism, so it is not installed system-wide.
|
|
|
|
- name: "unifont_upper.otf"
|
|
description: "GNU Unifont, planes above the BMP"
|
|
required: false
|
|
source_ref: "draw.cpp:352-375 (make_substitution_fonts), 476-478"
|
|
|
|
# -- Color themes, themes subdirectory --
|
|
# Every *.json in the theme directories is parsed, keyed on its name field.
|
|
- name: "Blue.json"
|
|
path: "themes/Blue.json"
|
|
description: "Blue color theme"
|
|
required: false
|
|
source_ref: "theme.cpp:304-316, garglk/CMakeLists.txt:524"
|
|
|
|
- name: "Breeze Darker.json"
|
|
path: "themes/Breeze Darker.json"
|
|
description: "Breeze Darker color theme"
|
|
required: false
|
|
source_ref: "theme.cpp:304-316, garglk/CMakeLists.txt:525"
|
|
|
|
- name: "Lectrote Dark.json"
|
|
path: "themes/Lectrote Dark.json"
|
|
description: "Lectrote Dark color theme"
|
|
required: false
|
|
source_ref: "theme.cpp:304-316, garglk/CMakeLists.txt:526"
|
|
|
|
- name: "Lectrote Sepia.json"
|
|
path: "themes/Lectrote Sepia.json"
|
|
description: "Lectrote Sepia color theme"
|
|
required: false
|
|
source_ref: "theme.cpp:304-316, garglk/CMakeLists.txt:527"
|
|
|
|
- name: "Lectrote Slate.json"
|
|
path: "themes/Lectrote Slate.json"
|
|
description: "Lectrote Slate color theme"
|
|
required: false
|
|
source_ref: "theme.cpp:304-316, garglk/CMakeLists.txt:528"
|
|
|
|
- name: "Pencil.json"
|
|
path: "themes/Pencil.json"
|
|
description: "Pencil color theme"
|
|
required: false
|
|
source_ref: "theme.cpp:304-316, garglk/CMakeLists.txt:529"
|
|
|
|
- name: "Zoom.json"
|
|
path: "themes/Zoom.json"
|
|
description: "Zoom color theme"
|
|
required: false
|
|
source_ref: "theme.cpp:304-316, garglk/CMakeLists.txt:530"
|
|
|
|
- name: "dark.json"
|
|
path: "themes/dark.json"
|
|
description: "Dark color theme"
|
|
required: false
|
|
source_ref: "theme.cpp:268-282,304-316, garglk/CMakeLists.txt:80-85,531"
|
|
note: "Also compiled in as the built-in dark theme."
|
|
|
|
- name: "light.json"
|
|
path: "themes/light.json"
|
|
description: "Light color theme"
|
|
required: false
|
|
source_ref: "theme.cpp:268-282,304-316, garglk/CMakeLists.txt:87-92,532"
|
|
note: "Also compiled in as the built-in light theme."
|