NAME¶
fizmo-ncursesw - wide-character-ncurses implementation of the fizmo Z-Machine
Interpreter.
SYNOPSIS¶
fizmo-ncursesw [ options ] [
storyfile [ blorbfile ] |
storytitle |
quetzal-save-file ]
DESCRIPTION¶
fizmo-ncursesw is a frontend for the fizmo Z-Machine
interpreter—“
Fimzo
interprets
Z-
machine
opcodes”—based on the ncurses
library, and supporting wide characters. 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 also 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 its 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 its story file list to locate the story file the saved game
originates from to directly restore the game.
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. 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-ncursesw is able to read metadata-files as defined in the “Treaty
of Babel”. It will try to read the metadata from all files ending in
.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.
- -dh, --disable-hyphenation
- Disable word hyphenation. Useful for languages other than the supported
ones.
- -ds, --disable-sound
- Disable sound alltogether. May be useful when playing on remote
machines.
- -ec, --enable-colors
- Enable colors.
- -f, --foreground-color <color-name>
- Set foreground color. Valid color names are black, red,
green, yellow, blue, magenta, cyan and
white.
- -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_US, de_DE and fr_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. See
http://www.ifarchive.org/if-archive/infocom/info/tandy_bits.html for
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
- Use UMem instead of CMem for 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.
IN-GAME COMMANDS¶
- /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 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>
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¶
You can use the PageUp and PageDown keys (some terminals may require holding
down shift) anytime to review text which was scrolled above the current window
border.
Refreshing the screen¶
CTRL-L will refresh the current display.
Redrawing the screen¶
CTRL-R will redraw the current display. 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.
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:
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 got stuck I peeked into the frotz source. Thanks to Stefan Jokisch, Galen
Hazelwood and David Griffith.
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, David Batchelder, David
Leverton, Eric Forgeot, irb, Lewis Gentry, Michael Dunlap, Mikko Torvinen,
Nikos Chantziaras, Patrick Matthäi, Samuel Verschelde, Zachary Kline
and the people at MacPorts.
SEE ALSO¶
fizmo-console(6), frotz(6), xzip(6), jzip(6),
inform(1)
AUTHOR¶
Fizmo was written in 2005–2014 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.