FIZMO-SDL2(6)
π FIZMO-SDL2(6) π β the Games Manual, but make it cute
okay so bestie, welcome to the manual page for fizmo-sdl2, and yes it lives in the Games Manual section, and yes we're about to read the whole thing together. grab a snack. π
β¨ NAME β¨
fizmo-sdl2 β an SDL2-based implementation of the fizmo Z-Machine Interpreter. that's the whole vibe. π¦
β¨ SYNOPSIS β¨
fizmo-sdl2 [ options ] [ storyfile [ blorbfile ] ]
like, that's it. options, then maybe a story file, then maybe a blorb file. slay. π
β¨ DESCRIPTION β¨
so fizmo-sdl2 is a frontend for the fizmo Z-Machine interpreter β the tagline for which is literally βFimzo interprets Z-machine opcodesβ β and it's built on top of the SDL2 multimedia library. π
it runs, like, most of the interactive fiction games (aka text adventures) that Infocom wrote, plus other games built on the Z-Machine. Currently all versions except version 6 are supported. noted. π«Ά
it also does sound support (there's a whole subsection about it, keep reading) and it implements basic Blorb support. iconic honestly.
πΈ Starting a new game by providing a filename πΈ
just give the filename of the story file at the end of the command line. that's it. that's the whole move. β¨
π Sound Support π
fizmo-sdl2 supports sound playback, periodt. π
sound files are either read from a blorb file, or β old-infocom-style-wise β from separate *.snd files that have to be stored in the same directory as the game file.
At the moment, only AIFF sounds can be read from a blorb file. fyi. π
when the game requests a sound, fizmo uses the sound from the current blorb file. if no blorb file is given, or the sound can't be found inside it, fizmo tries to locate a file with the format βGAMFIL00.SNDβ where GAMEFIL symbolizes the game filename shortened to a maximum of six characters, then the sound number β eventually padded by a leading zero so it always has a length of two characters β and a β.SNDβ suffix. π¦
both upper- and lowercase filenames are attempted. which means you can directly use the sounds from the IF-archive at β/if-archive/infocom/media/soundβ. no cap, that's a real path. π
β¨ OPTIONS β¨
okay here's the menu, bestie. every single one. π
-h,--helpβ Show help message and exit. π«Ά-b,--background-color <color-name>β Set background color. Valid color names are black, red, green, yellow, blue, magenta, cyan and white.-cc,--cusor-color <color-name>β Set the cursor . Valid color names are black, red, green, yellow, blue, magenta, cyan and white. (yes the option is spelled like that, we don't ask questions π)-dh,--disable-hyphenationβ Disable word hyphenation. Useful for languages other than the supported ones. π-ds,--disable-soundβ Disable sound altogether. May be useful when playing on remote machines.-f,--foreground-color <color-name>β Set foreground color. Valid color names are black, red, green, yellow, blue, magenta, cyan and white.-fs,--font-sizeβ Set text font size.-fi,--start-file-inputβ Start game with input from file.-if,--input-fileβ Filename to read commands from.-l,--set-locale <locale-code>β Set locale name for interpreter messages. Currently valid locale codes are en_GB, de_DE and fr_FR.-lm,--left-margin <width>β Set left margin width, requires a numeric argument.-mu,--maximum-undo-stepsβ Set number of maximum undo steps.-nx,--disable-x11-graphicsβ Disable X11 graphics.-pr,--predictableβ Start with random generator in predictable mode.-ps,--process-sdl2-eventsβ Setting this option to βqueueβ defines that sdl2 resize-related events should be processed directly from the event queue; setting it to βfilterβ uses SDL's event filter for these kind of events. Changing this setting might help in case resizing the interpreter window on your system does not work. π-ra,--randomβ Start with random generator in standard random mode.-rc,--record-commandsβ Activate recording of commands as soon as the game starts.-rf,--record-filenameβ Filename to record input to.-rm,--right-margin <width>β Set right margin width, requires a numeric argument.-s8,--force-8bit-soundβ Never use 16-bit resolution, always convert to 8bit (some systems may not be capable of 16-bit sound output).-st,--start-transcriptβ Start game with scripting already enabled.-sy,--sync-transcriptβ When a transcript is active, write data directly into the file as soon as possible.-t,--set-tandy-flagβ Sets the tandy flag, which emulates a game sold by the Tandy Corporation and slightly alters the game behaviour. Seehttp://www.ifarchive.org/if-archive/infocom/info/tandy_bits.htmlfor detailed information on what the tandy flag does. π§-tf,--transcript-filenameβ Set transcript filename for the current session.-um,--umemβ Use UMem instead of CMem for saving.-wh,--window-heightβ Define window height.-ww,--window-widthβ Set window width.
β¨ IN-GAME COMMANDS β¨
these are the ones you type inside the game, bestie, not on the command line. π
/helpβ Displays the list of available in-game commands./infoβ Displays general version about the interpreter and its status, such as the version number, story release and serial number, stack, memory and random generator status./configβ Displays current configuration values./predictableβ Switches the random generator from βrandomβ in βpredictableβ state and vice-versa./recstartβ Records all user input in a command-file./recstopβ Stop recording user input./fileinputβ Start reading commands from a file.
β¨ ENVIRONMENT β¨
ZCODE_PATHβ Default list of path names β separated by colons β to search for Z-Machine games.INFOCOM_PATHβ Alternate list of pathnames which is used whenZCODE_PATHis not set.ZCODE_ROOT_PATHβ List of colon-separated path names which are recursively searched for Z-Machine games. π
β¨ FILES β¨
π List of files π
$HOME/.config/fizmo/configβ May contain user configuration parameters. In case$XDG_CONFIG_HOMEis defined and contains an absolute path,$XDG_CONFIG_HOME/fizmo/configis used; in case of a relative path$HOME/$XDG_CONFIG_HOME/fizmo/confgis read. π«Ά($XDG_CONFIG_DIRS)/fizmo/configβ$XDG_CONFIG_DIRSmay contain a colon separated list of config directories to search. In case$XDG_CONFIG_DIRSis not set or empty,/etc/xdgis used instead. Every directory is searched for a subdirectory namedfizmocontaining a fileconfig, which will be searched for configuration parameters./etc/fizmo.confβ Global configuration parameters.
π Option names for config files π
the following section lists the config-file's equivalents for the command line options. for a detailed description of these options, see the βOptionsβ section. β
options have to start at the beginning of the line without any leading whitespace. comments start with a '#' at the beginning of the line.
background-color = <color-name>
foreground-color = <color-name>
transcript-filename = <filename>
command-filename = <filename>
cursor-color = <color-name>
font-search-path = <colon-separated-directory-names>
font-size = <font-size-value>
i18n-search-path = <colon-separated-directory-names>
locale = <language-code>
savegame-path = <directory-name>
random-mode = <random or predictable>
save-text-history-paragraphs = <number of paragraphs to store in
savegames>
z-code-path = <colon-separated-directory-names>
z-code-root-path = <colon-separated-directory-names>
disable-sound = <no value or βtrueβ means yes, otherwise no>
quetzal-umem = <no value or βtrueβ means yes, otherwise no>
set-tandy-flag = <no value or βtrueβ means yes, otherwise no>
start-command-recording-when-story-starts = <no value or βtrueβ means
yes, otherwise no>
start-file-input-when-story-starts = <no value or βtrueβ means yes,
otherwise no>
start-script-when-story-starts = <no value or βtrueβ means yes,
otherwise no>
disable-stream-2-hyphenation = <no value or βtrueβ means yes, otherwise
no>
disable-stream-2-wrap = <no value or βtrueβ means yes, otherwise no>
stream-2-line-width = <line-width>
stream-2-left-margin = <margin-size>
sync-transcript = <no value or βtrueβ means yes, otherwise no>
left-margin = <number-of-columns>
right-margin = <number-of-columns>
disable-hyphenation = <no value or βtrueβ means yes, otherwise no>
force-8bit-sound = <any value means yes, empty no>
enable-xterm-title = <no value or βtrueβ means yes, otherwise no>
max-undo-steps = <maximum number of stored undo steps as numerical
value>
history-reformatting-during-refresh = <any value means yes, empty no>
π Font options for config files π
regular-font = <ttf or otf file>
italic-font = <ttf or otf file>
bold-font = <ttf or otf file>
bold-italic-font = <ttf or otf file>
fixed-regular-font = <ttf or otf file>
fixed-regular-font = <ttf or otf file>
fixed-bold-font = <ttf or otf file>
fixed-bold-italic-font = <ttf or otf file>
regular-font = <ttf or otf file>
italic-font = <ttf or otf file>
bold-font = <ttf or otf file>
bold-italic-font = <ttf or otf file>
(yes, some of these are listed twice. we're not editing the lore, bestie. πβ¨)
πΈ MISCELLANEOUS πΈ
Okay bestie, this is the grab-bag section, and it's lowkey iconic. Buckle up. π
Scrolling back π
Anytime you wanna peek at text that already scrolled past the top of your window, just hit PageUp and PageDown. That's it. Some terminals are extra and make you hold down shift too, but that's a terminal thing, not a Fizmo thing. π
Refreshing the screen β¨
CTRL-L refreshes whatever's currently on your display. Clean, simple, slay.
Redrawing the screen π₯
CTRL-R redraws the current display too, but here's the tea β it is not the same as CTRL-L. CTRL-L refreshes based on the current layout, whereas CTRL-R reconstructs the latest output based on the output history. That difference is the whole point: it helps you see output that's been hidden, like when a game clears the screen, writes some text into the top line, and then turns on the score line, which overlays that topmost line. Rude of the game, honestly. CTRL-R fixes it. π
Resizing the screen π¦
So, real talk: resizing generally works best for game versions 3 and before. Which is unfortunate, because that only covers a part of the old Infocom games and none of the modern ones. π For everything else β and yes, that includes Seastalker β the upper window (which is mostly just the status bar) can't be resized and will stay fixed. It's giving immovable object.
Undocumented Infocom commands π
Here's a list of commands that some of Infocom's games seem to support, even though I never saw them mentioned in a manual or a reference card. Secret menu energy. π
$verify,$ve,$verβ Verifies if the game file is correct (essentially it executes theverifyopcode).$veworks in almost all original Infocom games.$verworks in AMFV, Beyond Zork, Bureaucracy, Nord and Bert, Sherlock, Trinity and Zork Zero.$refreβ Refreshes the screen. Works in AMFV, Arthur, Bureaucracy, Nord and Bert, Sherlock, Shogun, Trinity and Zork Zero.$idβ Gives you information about the interpreter. Works in Border Zone, Bureaucracy and Trinity.$crediβ Shows a credit screen in Trinity and Beyond Zork.#comm,#commandβ This will read your input from a file. Works in AMFV, Ballyhoo, Bureaucracy, Enchanter, Hollywood Hjinx, Leather Goddesses, Lurking Horror, Plundered Hearts, Shogun, Sorcerer, Spellbreaker, Stationfall, Trinity and Zork Zero.#rand <int>β Seeds the random generator with the given value. May be used in AMFV, Ballyhoo, Border Zone, Bureaucracy, Enchanter, Hollywood Hijinx, Leather Goddesses, Lurking Horror, Plundered Hearts, Shogun, Sorcerer, Spellbreaker, Stationfall and Zork Zero.#reco,#recordβ This will record your commands into a file. Works in AMFV, Ballyhoo, Bureaucracy, Enchanter, Hollywood Hjinx, Leather Goddesses, Lurking Horror, Plundered Hearts, Shogun, Sorcerer, Spellbreaker, Stationfall and Zork Zero.#unre,#unrecordβ Stops recording commands into a file. Used in AMFV, Ballyhoo, Bureaucracy, Enchanter, Hollywood Hijinx, Leather Goddesses, Lurking Horror, Plundered Hearts, Shogun, Sorcerer, Spellbreaker, Stationfall and Zork Zero.
π«Ά CREDITS π«Ά
This is the part where we say thank you to everybody, and honestly they all ate. π
ITF β The InfoTaskForce π
All the people who worked on the Z-Machine Specification, in alphabetical order: Chris Tham, David Beazley, David Fillmore, George Janczuk, Graham Nelson, Mark Howell, Matthias Pfaller, Mike Threepoint, Paul David Doherty, Peter Lisle, Russell Hoare and Stefan Jokisch. See http://en.wikipedia.org/wiki/InfoTaskForce for more information. Legends, every single one. π
The Frotz authors β
When I got stuck I peeked into the frotz source. Thanks to Stefan Jokisch, Galen Hazelwood and David Griffith. No cap, lifesavers.
Mark Howell π
For the pix2gif code which is used in libdrilbo to parse the infocom .mg1 image files. The way that man carried this feature ππ
People helping with bug fixes, extensions, packaging, translations and more π
In alphabetical order: Andrew Plotkin, B. Watson, Michael Baltes, David Batchelder, David Leverton, Eric Forgeot, irb, Jared Reisinger, Lewis Gentry, Michael Dunlap, Mikko Torvinen, Nikos Chantziaras, Patrick MatthΓ€i, Samuel Verschelde, Stephen Gutknecht, Zachary Kline and the people at MacPorts. Besties fr fr. π«ΆπΈ
π SEE ALSO π
fizmo-ncursesw(6), fizmo-console(6), frotz(6), xzip(6), jzip(6), inform(1)
Go read those too, iykyk. π¦
π AUTHOR π
Fizmo was written in 2005β2017 by Christoph Ender. That's a whole twelve years of main character energy. π
π BUGS π
Fizmo is in beta stage and will probably still have some bugs. Which, okay, fair, it's beta. If you stumble upon one, please send an e-mail to fizmo@spellbreaker.org. Don't be shy, bestie, the bugs are literally waiting for you to report them. π
This page is for version0.8.5, datedAugust 15, 2017, and it lives atFIZMO-SDL2(6). Thanks for reading the whole thing, you're iconic for that. Periodt. π β¨
π¦ where this page comes from
- debian bookworm: fizmo-sdl2 0.8.5-2+b1 Β· BSD-3-Clause
- debian trixie: fizmo-sdl2 0.8.5-2+b2 Β· BSD-3-Clause
- ubuntu jammy: fizmo-sdl2 0.8.5-2 Β· BSD-3-Clause
- ubuntu noble: fizmo-sdl2 0.8.5-2build2 Β· BSD-3-Clause
- ubuntu questing: fizmo-sdl2 0.8.5-2build3
- ubuntu resolute: fizmo-sdl2 0.8.5-2build4 Β· BSD-3-Clause
- ubuntu stonking: fizmo-sdl2 0.8.5-3 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms