FIZMO-NCURSESW(6)
๐ FIZMO-NCURSESW ๐
okay bestie, buckle up, because this is the wide-character-ncurses implementation of the fizmo Z-Machine Interpreter. that's the manual page name up top there โ FIZMO-NCURSESW(6), games manual section, iykyk. ๐ธ
โจ SYNOPSIS โจ
fizmo-ncursesw [ options ] [ storyfile [ blorbfile ] | storytitle |
quetzal-save-file ]
likeโฆ that's the whole vibe. options, then pick your fighter: a story file (maybe with a blorb bestie), a story title, or a quetzal save file. ๐
๐ฆ DESCRIPTION ๐ฆ
so fizmo-ncursesw is a frontend for the fizmo Z-Machine interpreter โ โFimzo interprets Z-machine opcodesโ โ and it's built on the ncurses library with wide character support, which is the whole point of the w in the name, no cap. ๐
it runs most of the interactive fiction games (aka text adventures, the OGs) written by Infocom, plus any other games based on the Z-Machine. right now it supports all versions except version 6 โ v6 said "not today" and honestly we respect the boundary. ๐ญ
it also does sound via the SDL media library โ scroll down to the โSound Supportโ subsection โ and it implements basic Blorb support. โจ
๐ฎ Starting a new game by providing a filename
this is the most direct way to get a game running, periodt. just slap the filename of the story file at the end of the command line and go. ๐ซถ
๐ Starting a new game by providing its title
if the game you wanna play lives in the list of known games, you don't even need the full filename โ just give the title. example: fizmo sorcerer will run the game โSorcererโ, and it does not care whether that game is chillin' in the current directory or literally anywhere else on the system. main character energy. ๐
๐ Starting a game from the list of story files
no filename given? fizmo will just show you the list of currently known story files it has indexed so far. and every time fizmo is started with no story-name provided, it will update the list of stories by indexing the directories listed in ZCODE_PATH or INFOCOM_PATH. it's giving โจorganizedโจ.
๐พ Restoring a game from the command line
if you hand it the name of a quetzal save-game file at the end of the command line, fizmo will use its story file list to locate the story file the saved game originates from, and directly restore the game. no digging required bestie, it finds it for you. ๐ฅ
๐ Sound Support
fizmo-ncursesw supports sound via the SDL multimedia library, which is available for most unix flavors and Windows. sound files are either read from a blorb file, or โ old-infocom-style-wise โ from separate *.snd files which 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. that's the limit, sorry bestie. ๐
when the game requests a sound, fizmo uses the sound from the current blorb file. if no blorb file is given, or the sound cannot be found in 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), then 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. slay.
๐ Story-Metadata / IF Bibliography
fizmo-ncursesw can read metadata-files as defined in the โTreaty of Babelโ. it will try to read the metadata from all files ending in .iFiction found in the $HOME/.config/fizmo directory. ๐
fizmo will re-build the story list once the metadata files have been changed. for this purpose, the timestamps for the metadata-files are stored in the file $HOME/.config/fizmo/babel-timestamps. for more info about the treaty, see http://babel.ifarchive.org/. โญ
๐ OPTIONS ๐
here's the whole menu, bestie, and we are NOT skipping any of it:
-h,--helpโ Show help message and exit.-b,--background-color <color-name>โ Set background color. Valid color names areblack,red,green,yellow,blue,magenta,cyanandwhite.-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.-ec,--enable-colorsโ Enable colors.-f,--foreground-color <color-name>โ Set foreground color. Valid color names areblack,red,green,yellow,blue,magenta,cyanandwhite.-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 areen_GB,de_DEandfr_FR.-lm,--left-margin <width>โ Set left margin width, requires a numeric argument.-nc,--dont-use-colorsโ Don't use colors.-nu,--dont-update-story-listโ Don't update story-list on startup. Useful in case you've got a large number of story files in your repository.-nx,--disable-x11-graphicsโ Disable X11 graphics.-pr,--predictableโ Start with random generator in predictable mode.-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.-rs,--recursively-search <directory-name>โ Search a directory recursively, meaning including subdirectories, for Z-Machine files.-s,--search <directory-name>โ Search a single directory for Z-Machine files.-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.-u,--update-story-listโ In case you have disabled automatic updates for your story list, this option will allow you to run the re-indexing manually.-um,--umemโ UseUMeminstead ofCMemfor saving.-mu,--maximum-undo-stepsโ Set number of maximum undo steps.-xi,-enable-x11-inline-graphicsโ Enable XTerm graphics. This will make fizmo try to display graphics into a X-Terminal. Since this represents a rather ugly hack โ and may not work at all for some installations โ it is not enabled by default.-xt,--enable-xterm-titleโ Use the XTerminal title bar to display the game name.
real talk: that -xi one is described by the original as โa rather ugly hackโ and it might straight up not work for some installations, which is why it's not enabled by default. proceed with love. ๐
๐น๏ธ IN-GAME COMMANDS ๐น๏ธ
these are the ones you type inside the game, slash and all:
/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 ๐ฑ
the vibe-setting variables, bestie:
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.
and that's where part 1 leaves us, because there's more coming. don't go anywhere ๐โจ
๐๏ธ FILES ๐
okay so this is the part where we tell you where fizmo keeps all its lil treasures โจ
๐ List of files ๐ธ
$HOME/.config/fizmo/configโ may contain user configuration parameters. And heads up bestie, there's a plot twist: in case$XDG_CONFIG_HOMEis defined and contains an absolute path, then$XDG_CONFIG_HOME/fizmo/configis what gets used instead. But if that path is relative? Then$HOME/$XDG_CONFIG_HOME/fizmo/confgis read. yeah. that one. ๐($XDG_CONFIG_DIRS)/fizmo/configโ$XDG_CONFIG_DIRScan hold a colon separated list of config directories to search. If$XDG_CONFIG_DIRSisn't set or is empty,/etc/xdgis used instead. Every directory gets searched for a subdirectory namedfizmocontaining a fileconfig, and that file gets searched for configuration parameters. it's giving treasure hunt ๐/etc/fizmo.confโ global configuration parameters. the big system-wide ones, no cap.$HOME/.config/fizmo/story-list.txtโ contains the current list of story files known. In case$XDG_CONFIG_HOMEis set the path is altered as described above.$HOME/.config/fizmo/*.iFictionโ Fizmo treats all files with a suffix of.iFictionin the$HOME/.config/fizmodirectory as sources for story metadata. For more info, see section โStory-Metadata / IF Bibliographyโ above. In case$XDG_CONFIG_HOMEis defined, see above. ๐$HOME/.config/fizmo/babel-timestampsโ a list of.iFiction-files and their respective timestamps as they were found when the story list was last built (knowing if the babel info has changed speeds up the update process).$XDG_CONFIG_HOMEwill alter the directory as described before. lowkey genius honestly โก
โ๏ธ Option names for config files ๐
The following section lists the config-file's equivalents for the command lines 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>
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>
disable-color = <any value means yes, empty no>
force-8bit-sound = <any value means yes, empty no>
enable-xterm-title = <no value or โtrueโ means yes, otherwise no>
dont-udpate-story-list = <no value or โtrueโ means yes, otherwise no>
max-undo-steps = <maximum number of stored undo steps as numerical value>
enable-xterm-graphics = <no value or โtrueโ means yes, otherwise no>
display-x11-inline-image = <no value or โtrueโ means yes, otherwise no>
๐ MISCELLANEOUS ๐ฆ
โฌ๏ธ Scrolling back ๐
You can use the PageUp and PageDown keys โ some terminals may require holding down shift, rude โ anytime to review text which was scrolled above the current window border. no more losing your place mid-scroll bestie ๐
๐ Refreshing the screen โจ
CTRL-L will refresh the current display. simple. clean. iconic.
๐จ Redrawing the screen ๐
CTRL-R will redraw the current display. And here's the difference, because it matters: contrary to CTRL-L, which refreshes the screen based on the current layout, CTRL-R will reconstruct the latest output based on the output history. This will help to display output which is hidden in case a game clears the screen, writes some text into the top line and then turns on the score line which then overlays the topmost line. so basically CTRL-R is the one that goes "hold on i got you" and digs the receipts back up ๐
๐ Resizing the screen ๐ฅ๏ธ
In general, resizing the screen works best for game versions 3 and before, which is unfortunate since this encompasses only a part of the old Infocom games and none of the modern ones. ๐ญ For all others โ including Seastalker โ the upper window (which means mostly the status bar) cannot be resized and will remain fixed. so, like, it just stays the size it was. periodt.
๐ต๏ธ Undocumented Infocom commands ๐
Here is a list of commands that some of Infocom's games seem to support, although I never saw them menitioned in a manual or reference card. (iykyk โ these are the secret menu of Z-Machine life ๐)
$verify,$ve,$verโ Verifies if the game file is correct (essentially executes the โverifyโ opcode).$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โ The$idcommand gives 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 ๐
๐ง ITF โ The InfoTaskForce ๐ธ
All the people who worked on the Z-Machine Specification, in alphabetical order: Chris Tham, David Beazley, George Janczuk, David Fillmore, 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, all of them, fr fr ๐
๐ธ The Frotz authors ๐
When I got stuck I peeked into the frotz source. Thanks to Stefan Jokisch, Galen Hazelwood and David Griffith. (shoutout to the peek-behind-the-curtain strategy, it ate ๐ )
๐ผ๏ธ Mark Howell ๐
For the pix2gif code which is used in libdrilbo to parse the infocom .mg1 image files.
๐ซถ 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, Jared Reisinger, irb, Lewis Gentry, Michael Dunlap, Mikko Torvinen, Nikos Chantziaras, Patrick Matthรคi, Samuel Verschelde, Stephen Gutknecht, Zachary Kline and the people at MacPorts. the whole group chat showed up ๐ญ๐
๐ SEE ALSO ๐
fizmo-sdl2(6), fizmo-console(6), frotz(6), xzip(6), jzip(6), inform(1)
โ๏ธ AUTHOR ๐ฆ
Fizmo was written in 2005โ2017 by Christoph Ender.
๐ BUGS ๐
Fizmo is in beta stage and will probably still have some bugs. If you stumble upon one, please send an e-mail to fizmo@spellbreaker.org. do it bestie, the maintainers wanna hear from you ๐ซถ
and that's the whole page, we made it!! ๐ this was version0.7.14, dated August 14, 2017, from theFIZMO-NCURSESW(6)manual. go forth and play some interactive fiction, main character ๐ โจ๐
๐ฆ where this page comes from
- debian bookworm: fizmo-ncursesw 0.7.14-2+b1 ยท BSD-3-Clause
- debian trixie: fizmo-ncursesw 0.7.14-2+b2 ยท BSD-3-Clause
- ubuntu jammy: fizmo-ncursesw 0.7.14-2 ยท BSD-3-Clause
- ubuntu noble: fizmo-ncursesw 0.7.14-2build3 ยท BSD-3-Clause
- ubuntu questing: fizmo-ncursesw 0.7.14-2build4
- ubuntu resolute: fizmo-ncursesw 0.7.14-2.1 ยท BSD-3-Clause
- ubuntu stonking: fizmo-ncursesw 0.7.14-3 ยท BSD-3-Clause
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms