FIZMO-SDL2(6)

NAME
fizmo-sdl2 - SDL2-based implementation of the fizmo Z-Machine Interpreter.

SYNOPSIS
fizmo-sdl2 [ options ] [ storyfile [ blorbfile ] ]

DESCRIPTION
fizmo-sdl2 is a frontend for the fizmo Z-Machine interpreter—“Fimzo interprets Z-machine opcodes”—based on the SDL2 multimedia library. 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 provides sound support—see subsection “Sound Support”—and implements basic Blorb support.

  Starting a new game by providing a filename
Just give the filename of the story file at the end of the command line.

  Sound Support
fizmo-sdl2 supports sound playback. 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”.

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.

-cc, --cusor-color <color-name>
    Set the cursor . 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 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. 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.

-um, --umem
    Use UMem instead of CMem for saving.

-wh, --window-height
    Define window height.

-ww, --window-width
    Set window width.

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.

  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>
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>

MISCELLANEOUS

  Scrolling back
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 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.

  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, 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.

SEE ALSO
fizmo-ncursesw(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.