NAME
fizmo - Z-Machine Interpreter - “Fimzo interprets Z-machine opcodes”
SYNOPSIS
fizmo [ options ] [ storyfile [ blorbfile ] | storytitle | quetzal-
save-file ]
DESCRIPTION
Fizmo is a Z-Machine interpreter, which means that it runs most of the
interactive fiction games aka text adventures written by Infocom or
other games which are based on the Z-Machine. Currently all versions
except version 6 are supported. It supports sound via the SDL media
library (see subsection “Sound Support”) and implements basic Blorb
support.
Starting a new game by providing a filename
This is the most direct way to get a game running. Just give the
filename of the story file at the end of the command line.
Starting a new game by providing it’s title
If the game you want to play is stored in the list of known games, you
can simply start it by providing the title instead of the full
filename. Example: "fizmo sorcerer" will run the game “Sorcerer”, no
matter if it is stored in the current directory or somewhere else.
Starting a game from the list of story files
Without any filename given, fizmo will display the list of the
currently known story files it has indexed so far. Everytime fizmo is
started and no story-name is provided, fizmo will update the list of
stories by indexing the directories listed in ZCODE_PATH or
INFOCOM_PATH.
Restoring a game from the command line
If you give the name of a quetzal save-game file at the end of the
command line, fizmo will use it’s story file list to locate the story
file the saved game originates from to directly restore the game.
Sound Support
Fizmo 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. 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,
the sound number—eventually padded by a leading zero so it has always a
length of two characters—and a “.SND” suffix. Both upper- and lowercase
filenames are attempted. That means you can directly use the sounds
from the IF-archive at “/if-archive/infocom/media/sound”.
Story-Metadata / IF Bibliography
Fizmo is able to read metadata-files as defined in the “Treaty of
Babel”. It will try to read the metadata from all files ending with
.iFiction which are 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 information
about the treaty, see http://babel.ifarchive.org/.
OPTIONS
-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.
-bb, --blink-for-bright-background
Use blink for bright background colors.
-bf, --bold-for-bright-foreground
Use bold for bright foreground colors.
-ds, --disable-sound
Disable sound alltogether. May be useful when playing on remote
machines.
-ec, --enable-colors
Force using colors.
-f, --foreground-color <color-name>
Set foreground color. Valid color names are black, red, green,
yellow, blue, magenta, cyan and white.
-if, --input-file
When the story starts, read input directly from a file.
-l, --set-locale <locale-code>
Set locale name for interpreter messages. Currently valid locale
codes are en_US and de_DE.
-lm, --left-margin <width>
Set left margin width, requires a numeric argument.
-nc, --dont-use-colors
Don’t use colors.
-p, --predictable
Start with random generator in predictable mode.
-fp, --force-predictable
Start with random generator in predictable mode. The random
generator will ignore all seed commands and always deliver
predictable number (which might make games unsolvable).
-rc, --record-commands
Activate recording of commands as soon as the game starts.
-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.
-t, --set-tandy-flag
Sets the tandy flag, which emulates a game sold by the Tandy
Corporation and slightly alters the game behaviour. See
http://www.ifarchive.org/if-archive/infocom/info/tandy_bits.html
for detailed information on what the tandy flag does.
-um, --umem
Use UMem instead of CMem for saving.
-sy, --sync-transcript
When a transcript is active, write data directly into the file
as soon as possible.
-x, -enable-xterm-graphics
Enable XTerm graphics. This will make fizmo try to display
graphics into an X11-XTerminal using Gtk 2.0 and Gdk-Pixbuf.
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.
IN-GAME COMMANDS
/help Displays the list of available in-game commands.
/info Displays general version about the interpreter and it’s status,
such as the version number, story release and serial number,
stack, memory and random generator status.
/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 when ZCODE_PATH is 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_HOME is defined and contains an absolute path,
$XDG_CONFIG_HOME/fizmo/config is used, in case of a relative
path $HOME/$XDG_CONFIG_HOME/fizmo/confg is read.
($XDG_CONFIG_DIRS)/fizmo/config
$XDG_CONFIG_DIRS may contain a colon separated list of config
directories to search. In case $XDG_CONFIG_DIRS is not set or
empty /etc/xdg is used instead. Every directory is searched for
a subdirectory named fizmo containing a file config, which will
be searched for configuration parameters.
/etc/fizmo.conf
Global configuration parameters.
$HOME/.config/fizmo/story-list.txt
Contains the current list of story files known. In case
$XDG_CONFIG_HOME is set the path is altered as described above.
$HOME/.config/fizmo/*.iFiction
Fizmo treats all files with a suffix of .iFiction in the
$HOME/.config/fizmo directory as sources for story metadata. For
more info, see section “Story-Metadata / IF Bibliography” above.
In case $XDG_CONFIG_HOME is 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_HOME will alter the directory as described before.
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>
transscript-filename = <filename>
command-filename = <filename>
langauage = <language-code>
bold-for-bright-foreground = <any value means yes, empty no>
blink-for-bright-background = <any value means yes, empty no>
dont-use-colors = <any value means yes, empty no>
savegame-path = <directory-name>
enable-xterm-graphics = <any value means yes, empty no>
enable-xterm-title = <any value means yes, empty no>
left-margin = <number-of-columns>
right-margin = <number-of-columns>
dont-udpate-story-list = <any value means yes, empty no>
MISCELLANEOUS
Scrolling back
You can use the PageUp and PageDown keys (some terminals require to
hold down shift) anytime to review text which was scrolled above the
current window border.
Refreshing the screen
CTRL-L will redraw the current display.
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.
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.
$verify, $ve, $ver
Verifies if the game file is correct (essentially executes the
“verify” opcode). “$ve” works in almost all original Infocom
games, “$ver” works 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 “$id” command 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 drew up the Z-Machine Specification. In alphabetical
order (as far as I could find): Chris Tham, David Beazley, 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.
The Frotz authors
When I really got stuck I secretly peeked into the frotz source. Thanks
to Stefan Jokisch, Galen Hazelwood and David Griffith.
The w3m-img authors
Akinori Ito, Hironori Sakamoto and Fumitoshi Ukai for the w3m-img code
which I used to get graphics output into an XTerm.
SEE ALSO
frotz(6), xzip(6), jzip(6), inform(1)
AUTHOR
Fizmo was written in 2005–2010 by Christoph Ender.
BUGS
Fizmo is still in beta stage and I couldn’t test all the games out
there, so there will be some for sure. If you find them, please send an
e-mail to fizmo@spellbreaker.org.