Skip to content

Gargoyle - RetroBIOS

Type standalone
Classification Game engines
Source https://github.com/garglk/garglk
Version 2026.1
Profiled 2026-08-08
Cores gargoyle
Systems adrift, advsys, agt, alan, glulx, hugo, jacl, level9, magnetic-scrolls, scott-adams, scott-adams-plus, tads, taylormade, zmachine
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, /../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)

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

unifont_upper.otf optional in repo
GNU Unifont, planes above the BMP

Blue.json optional in repo
Blue color theme

Breeze Darker.json optional in repo
Breeze Darker color theme

Lectrote Dark.json optional in repo
Lectrote Dark color theme

Lectrote Sepia.json optional in repo
Lectrote Sepia color theme

Lectrote Slate.json optional in repo
Lectrote Slate color theme

Pencil.json optional in repo
Pencil color theme

Zoom.json optional in repo
Zoom color theme

dark.json optional in repo
Dark color theme

light.json optional in repo
Light color theme

Generated on 2026-08-23T16:12:06Z