Gargoyle - RetroBIOS¶
Technical 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,
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)
19 files | 8 required, 11 optional | 19 in repo, 0 missing
Gargoyle-Mono.ttf required in repo
Gargoyle Mono regular (Go Mono)
Gargoyle-Mono-Bold.ttf required in repo
Gargoyle Mono bold (Go Mono)
Gargoyle-Mono-Italic.ttf required in repo
Gargoyle Mono italic (Go Mono)
Gargoyle-Mono-Bold-Italic.ttf required in repo
Gargoyle Mono bold italic (Go Mono)
Gargoyle-Serif.ttf required in repo
Gargoyle Serif regular (Charis SIL)
Gargoyle-Serif-Bold.ttf required in repo
Gargoyle Serif bold (Charis SIL)
Gargoyle-Serif-Italic.ttf required in repo
Gargoyle Serif italic (Charis SIL)
Gargoyle-Serif-Bold-Italic.ttf required in repo
Gargoyle Serif bold italic (Charis SIL)
unifont.otf optional in repo
GNU Unifont, Basic Multilingual Plane glyph fallback
- Source:
garglk/draw.cpp:352-375,garglk/draw.cpp:476-478 - Covers glyphs missing from the text fonts. Loaded directly rather than through the system font mechanism, so it is not installed system-wide.
unifont_upper.otf optional in repo
GNU Unifont, planes above the BMP
Blue.json optional in repo
Blue color theme
- Path:
themes/Blue.json - Source:
garglk/theme.cpp:304-316,garglk/CMakeLists.txt:524
Breeze Darker.json optional in repo
Breeze Darker color theme
- Path:
themes/Breeze Darker.json - Source:
garglk/theme.cpp:304-316,garglk/CMakeLists.txt:525
Lectrote Dark.json optional in repo
Lectrote Dark color theme
- Path:
themes/Lectrote Dark.json - Source:
garglk/theme.cpp:304-316,garglk/CMakeLists.txt:526
Lectrote Sepia.json optional in repo
Lectrote Sepia color theme
- Path:
themes/Lectrote Sepia.json - Source:
garglk/theme.cpp:304-316,garglk/CMakeLists.txt:527
Lectrote Slate.json optional in repo
Lectrote Slate color theme
- Path:
themes/Lectrote Slate.json - Source:
garglk/theme.cpp:304-316,garglk/CMakeLists.txt:528
Pencil.json optional in repo
Pencil color theme
- Path:
themes/Pencil.json - Source:
garglk/theme.cpp:304-316,garglk/CMakeLists.txt:529
Zoom.json optional in repo
Zoom color theme
- Path:
themes/Zoom.json - Source:
garglk/theme.cpp:304-316,garglk/CMakeLists.txt:530
dark.json optional in repo
Dark color theme
- Path:
themes/dark.json - Source:
garglk/theme.cpp:268-282,garglk/theme.cpp:304-316,garglk/CMakeLists.txt:80-85,garglk/CMakeLists.txt:531 - Also compiled in as the built-in dark theme.
light.json optional in repo
Light color theme
- Path:
themes/light.json - Source:
garglk/theme.cpp:268-282,garglk/theme.cpp:304-316,garglk/CMakeLists.txt:87-92,garglk/CMakeLists.txt:532 - Also compiled in as the built-in light theme.
Generated on 2026-08-23T16:12:06Z