mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-11 14:03:23 -05:00
232 lines
10 KiB
YAML
232 lines
10 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: "520c3cbca2d8956d9f4b7e4e9ca2a92dce59778d"
|
|
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: garglk/launcher.cpp:114-189 (probe, extensions, interpreters), 379-419 (rungame)
|
|
|
|
Formats and the interpreter each one runs: Adrift 4 and Adrift 5 both
|
|
default to scarier, which handles the two; scare takes Adrift 4 and
|
|
FrankenDrift takes Adrift 5 only where the build asked for them, since each
|
|
covers a single format. Then 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: garglk/launcher.cpp:50-74 (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:77 (WITH_FRANKENDRIFT), gargoyle-appimage.sh:14,
|
|
garglk/launcher.cpp:174-175,212
|
|
|
|
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/garglk.h:675-676 (defaults), garglk/garglk.ini:205,208, garglk/fontfc.cpp:83-154
|
|
(fontconfig lookup), garglk/draw.cpp:381-408 (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: garglk/sysqt.cpp:931-975, garglk/sysmac.mm:1001-1018, garglk/CMakeLists.txt:137,145,
|
|
510-534, gargoyle_osx.sh:124-125,211-213, installer.nsi:89-90,208-215
|
|
|
|
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: garglk/theme.cpp:266-319, garglk/sysqt.cpp:953-975, garglk/CMakeLists.txt:81-93
|
|
|
|
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: garglk/config.cpp:443-493, garglk/CMakeLists.txt:15 (INSTALL_GARGLKINI),
|
|
garglk/CMakeLists.txt:61-79 (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: garglk/config.cpp:294-298,864-872, garglk/snddecode.cpp:373-395,
|
|
garglk/CMakeLists.txt:58 (DEFAULT_SOUNDFONT), INSTALL.md:153-157
|
|
|
|
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: terps/level9/Glk/glk.c:6415-6450, terps/magnetic/Glk/glk.c:5758-5855,
|
|
terps/CMakeLists.txt:69,73,359,469,565 (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: terps/tads/glk/osmisc.c:69-72,316-334, terps/tads/tads2/cmap.c:290-315,
|
|
terps/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: "garglk/draw.cpp:657 (make_entry monor), garglk/draw.cpp:421-471 (make_font, winabort)"
|
|
|
|
- name: "Gargoyle-Mono-Bold.ttf"
|
|
description: "Gargoyle Mono bold (Go Mono)"
|
|
required: true
|
|
source_ref: "garglk/draw.cpp:658 (make_entry monob), garglk/draw.cpp:421-471 (make_font, winabort)"
|
|
|
|
- name: "Gargoyle-Mono-Italic.ttf"
|
|
description: "Gargoyle Mono italic (Go Mono)"
|
|
required: true
|
|
source_ref: "garglk/draw.cpp:659 (make_entry monoi), garglk/draw.cpp:421-471 (make_font, winabort)"
|
|
|
|
- name: "Gargoyle-Mono-Bold-Italic.ttf"
|
|
description: "Gargoyle Mono bold italic (Go Mono)"
|
|
required: true
|
|
source_ref: "garglk/draw.cpp:660 (make_entry monoz), garglk/draw.cpp:421-471 (make_font, winabort)"
|
|
|
|
- name: "Gargoyle-Serif.ttf"
|
|
description: "Gargoyle Serif regular (Charis SIL)"
|
|
required: true
|
|
source_ref: "garglk/draw.cpp:661 (make_entry propr), garglk/draw.cpp:421-471 (make_font, winabort)"
|
|
|
|
- name: "Gargoyle-Serif-Bold.ttf"
|
|
description: "Gargoyle Serif bold (Charis SIL)"
|
|
required: true
|
|
source_ref: "garglk/draw.cpp:662 (make_entry propb), garglk/draw.cpp:421-471 (make_font, winabort)"
|
|
|
|
- name: "Gargoyle-Serif-Italic.ttf"
|
|
description: "Gargoyle Serif italic (Charis SIL)"
|
|
required: true
|
|
source_ref: "garglk/draw.cpp:663 (make_entry propi), garglk/draw.cpp:421-471 (make_font, winabort)"
|
|
|
|
- name: "Gargoyle-Serif-Bold-Italic.ttf"
|
|
description: "Gargoyle Serif bold italic (Charis SIL)"
|
|
required: true
|
|
source_ref: "garglk/draw.cpp:664 (make_entry propz), garglk/draw.cpp:421-471 (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: "garglk/draw.cpp:473-496 (make_substitution_fonts), garglk/draw.cpp:642-644"
|
|
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: "garglk/draw.cpp:473-496 (make_substitution_fonts), garglk/draw.cpp:642-644"
|
|
|
|
# -- 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: "garglk/theme.cpp:304-316, garglk/CMakeLists.txt:564"
|
|
|
|
- name: "Breeze Darker.json"
|
|
path: "themes/Breeze Darker.json"
|
|
description: "Breeze Darker color theme"
|
|
required: false
|
|
source_ref: "garglk/theme.cpp:304-316, garglk/CMakeLists.txt:565"
|
|
|
|
- name: "Lectrote Dark.json"
|
|
path: "themes/Lectrote Dark.json"
|
|
description: "Lectrote Dark color theme"
|
|
required: false
|
|
source_ref: "garglk/theme.cpp:304-316, garglk/CMakeLists.txt:566"
|
|
|
|
- name: "Lectrote Sepia.json"
|
|
path: "themes/Lectrote Sepia.json"
|
|
description: "Lectrote Sepia color theme"
|
|
required: false
|
|
source_ref: "garglk/theme.cpp:304-316, garglk/CMakeLists.txt:567"
|
|
|
|
- name: "Lectrote Slate.json"
|
|
path: "themes/Lectrote Slate.json"
|
|
description: "Lectrote Slate color theme"
|
|
required: false
|
|
source_ref: "garglk/theme.cpp:304-316, garglk/CMakeLists.txt:568"
|
|
|
|
- name: "Pencil.json"
|
|
path: "themes/Pencil.json"
|
|
description: "Pencil color theme"
|
|
required: false
|
|
source_ref: "garglk/theme.cpp:304-316, garglk/CMakeLists.txt:569"
|
|
|
|
- name: "Zoom.json"
|
|
path: "themes/Zoom.json"
|
|
description: "Zoom color theme"
|
|
required: false
|
|
source_ref: "garglk/theme.cpp:304-316, garglk/CMakeLists.txt:570"
|
|
|
|
- name: "dark.json"
|
|
path: "themes/dark.json"
|
|
description: "Dark color theme"
|
|
required: false
|
|
source_ref: "garglk/theme.cpp:268-282, garglk/theme.cpp:304-316, garglk/CMakeLists.txt:81-86, garglk/CMakeLists.txt:571"
|
|
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: "garglk/theme.cpp:268-282, garglk/theme.cpp:304-316, garglk/CMakeLists.txt:88-93, garglk/CMakeLists.txt:572"
|
|
note: "Also compiled in as the built-in light theme."
|