Provided by: sdlfrotz_2.54+dfsg-1_amd64 bug

NAME

       sfrotz - interpreter for Infocom and other Z-Machine games (SDL interface)

SYNOPSIS

       sfrotz [options] file [blorb_file]

       At  least  one  file must be specified on the command line.  This can be either a plain Z-
       code file or a Blorb file.  A Z-code file is a compiled executable for the  Z-Machine.   A
       Blorb  file  contains audio, graphics, and other things in addition to the game wrapped up
       into a single file.  It can also optionally contain the Z-Machine executable.  If a  plain
       Z-code  file  is  supplied, then Frotz will check for a Blorb file with the same base name
       but an extension of .blb, .blorb, or .zblorb and load it if found.

       If the file supplied on the command line is a Blorb file, then Frotz will check to see  if
       a Z-code file is contained within.  If not found, then Frotz will complain and exit.

       An  alternatively-named Blorb file can be supplied as the optional second parameter to the
       command line invocatio

DESCRIPTION

       Frotz is a Z-Machine interpreter.  The Z-machine is a virtual machine designed by  Infocom
       to  run  all  of  their  text  adventures.   It went through multiple revisions during the
       lifetime of the company, and two further revisions (V7 and  V8)  were  created  by  Graham
       Nelson  after  the company's demise.  The specification is now quite well documented; this
       version of Frotz supports version 1.0.

       This version of Frotz fully supports all these versions of  the  Z-Machine  including  the
       graphical version 6.  Graphics and sound are created through the use of the SDL libraries.
       AIFF sound effects and music in MOD and OGG formats are supported when packaged  in  Blorb
       container files or optionally from individual files.

STANDARD OPTIONS

       -a     Watch  attribute  setting.   Setting  and clearing of attributes on objects will be
              noted in debugging messages.

       -A     Watch attribute testing.  Every time the Z-machine tests an  attribute  value,  the
              test and the result will be reported.

       -b <colorname>
              Sets the default background color.  <colorname> corresponds to one of the Z-machine
              colors, which are as follows:
              black red green yellow blue magenta cyan white
              If color support is disabled or not available on your terminal,  this  option  does
              nothing.

       -c N   Sets  the number of context lines used.  By default, after a ``[MORE]'' prompt, and
              assuming there is enough output pending, Frotz will allow all the currently visible
              lines  to  scroll off the screen before prompting again.  This switch specifies how
              many lines of text Frotz will hold over and display at the top of the next screen.

       -C <filename>
              Load this configuration file instead of $HOME/.sfrotzrc.

       -d     Disable color.

       -f <colorname>
              Sets the default foreground color.  <colorname> corresponds to one of the Z-machine
              colors, which are as follows
              black red green yellow blue magenta cyan white
              If color support is disabled or is not available on your terminal, this option does
              nothing.

       -h N   Manually sets the text height.

       -i     Ignore fatal errors.  If a Z-Machine interpreter encounters a zcode error  such  as
              division-by-zero  or  addressing an illegal object, the proper response is to abort
              execution.  This is done because the zcode program doesn't have  a  clear  idea  of
              what  is  going on.  There are some games out there that cause fatal errors because
              the authors were careless and used an interpreter that didn't  properly  check  for
              errors.   This  option  is  intended  to  get  around such bugs, but be warned that
              Strange Things may happen if fatal errors are not caught.

       -I N   Set the interpreter number.  Infocom designed the Z-machine such that a game  could
              tell  on  what kind of machine the interpreter was running.  See INTERPRETER NUMBER
              below.

       -l N   Sets the left margin, for those who might have specific formatting needs.

       -L <filename>
              When the game starts, load this saved game file.

       -o     Watch object movement.  This option enables debugging messages from the interpreter
              which describe the moving of objects in the object tree.

       -O     Watch object location.  These debugging messages detail the locations of objects in
              the object tree.

       -P     Alter the piracy opcode.  The piracy opcode was never used by Infocom.  This switch
              is really only useful for those who like to toy around with Z-code.

       -r N   Sets the right margin.

       -s N   Set the random number seed value.  The given seed value is used as the initial seed
              value on every restart. This is helpful for testing games like  Curses  which  make
              random  decisions  before  the  first  input  (such that the hot key Alt-S does not
              really help).

       -S N   Set the transcript width.  By default your transcript  files  are  formatted  to  a
              width  of  80  columns per line, regardless of the current text width.  This switch
              allows you to change this setting. In particular, use -S 0 to deactivate  automatic
              line splitting in transcript files.

       -t     Sets  the  Z-machine's  Tandy bit, which may affect the behavior of certain Infocom
              games.  For example, Zork I pretends not to  have  sequels,  and  Witness  has  its
              language toned down.

       -u N   Sets  the  number  of slots available for Frotz's multiple undo hotkey (see below).
              This defaults to twenty, which should be sufficient for most purposes.  Setting too
              high a number here may be dangerous on machines with limited memory.

       -w N   Manually sets the text width.

       -x     Expand the abbreviations "g", "x", and "z" to "again", "examine", and "wait".  This
              switch is for use with old Infocom games that lack these common abbreviations which
              were  introduced  in  later games.  Use it with caution: A few games might use "g",
              "x" or "z" for different purposes.

       -Z N   Error checking mode.
              0 = don't report errors.
              1 = report first instance of an error.
              2 = report all errors.
              3 = exit after any error.
              Default is 1 (report first instance of an error).

EXTENDED OPTIONS

       -@ <listfile>
              Use resource files listed in <listfile> (see NON BLORB RESOURCES).

       -%     Use local resource files.

       -F     Run in fullscreen mode (see NOTES).

       -m <msecs>
              Set the timer interrupt cycle to <msecs> milliseconds, instead of the  default  100
              (1/10 sec).

       -N <mode>
              Set  the  mode  (date or name) for creating default file names for save/script etc.
              For date, a timestamp is prepended to the filename extension.  For  name,  a  four-
              digit number beginning with 0000 is prepended to the filename extension.

       -T     Use traditional in-game requests for file names, instead of on-screen dialogs.

       -v     Show  version  information  and exit.  This will display the version of Frotz, some
              information about what's enabled and what's not, the  commit  date  of  the  source
              code, and a git(1) hash of that commit.

       -V     Force the use of default monospaced VGA font.

HOT KEYS

       Sfrotz  supports  the  same hot keys as standard Frotz, plus the Ctl-Alt-X combination for
       immediate exit, which may be used in case of emergency.  Note  that  these  hot  keys  are
       enabled  only  when  the Z-machine is waiting for line input (for Z-machine experts: @read
       opcode), with the exception of Ctl-Alt-X which also works in single character  input  mode
       (@read_char opcode).

       Alt-D  Set debugging options.

       Alt-H  Help (print the list of hot keys).

       Alt-N  New game (restart).

       Alt-P  Playback on.

       Alt-R  Recording on/off.

       Alt-S  Set random number seed.

       Alt-U  Undo one turn.

       Alt-X  Exit game (after confirmation).

       Ctl-Alt-X
              Exit game immediately (no confirmation).

WINDOW

       Sfrotz  has  a hardwired default screen size of 640x400. The screen size can be changed by
       the values in this section, by the values found in the Reso chunk of  a  Blorb  file,  and
       finally  by  the  -w and -h command line options (in that order). Note however that Sfrotz
       shall refuse to set a screen width less than 640 and/or a height less than 400. NOTE:  for
       normal  (windowed)  usage,  the  screen  size  should obviously be less than the PC screen
       resolution (taking into account also window decorations,  taskbars  etc.)  For  fullscreen
       usage,  the  size  should  preferably  be  one  of those supported by the PC video driver;
       otherwise, SDL shall try to use the next higher available resolution, with  black  borders
       around  the  Z-machine  screen.  In  fullscreen mode, however, it may happen that for some
       strange resolutions SDL accepts the request, but the screen goes blank... In such a  case,
       you may shut down the program by pressing Ctrl-Alt-X.

INTERPRETER NUMBER

       The interpreter number is a setting in the Z-machine header which is used to tell the game
       on what sort of machine the interpreter is running.  Sfrotz will automatically choose  the
       most  appropriate  number  for a given Infocom-produced game.  Should you want to override
       the number, the -I option is available.

       An interpreter should choose the interpreter number most suitable for the machine it  will
       run  on.   In  Versions  up  to 5, the main consideration is that the behaviour of 'Beyond
       Zork' depends on the interpreter number (in terms of its usage of the  character  graphics
       font).  In Version 6, the decision is more serious, as existing Infocom story files depend
       on interpreter number in many ways: moreover, some story files expect to be  run  only  on
       the  interpreters  for  a particular machine.  There are, for instance, specifically Amiga
       versions.  The DECSystem-20 was Infocom's own in-house mainframe.

       For Infocom's four V6 games, the interpreter number will be automatically chosen based  on
       the title and release number.  Of course, this can be overridden at the command line.

       Infocom used the following interpreter numbers:

       1   DECSystem 20

       2   Apple IIe

       3   Macintosh

       4   Amiga

       5   Atari ST

       6   IBM PC

       7   Commodore128

       8   Commodore64

       9   Apple IIc

       10   Apple IIgs

       11   Tandy Color

NON BLORB RESOURCES

       Besides  Blorb-packaged  resources,  Sfrotz  can  also  render  graphics  and  sound  from
       individual files, provided the latter are either suitably named (e.g a common root with  a
       numeric  field  specifying  the  resource  number), or listed in a suitably formatted text
       file.

       Note that this feature is not automatic, but must be enabled by the -% or -@ command  line
       options. When the feature is enabled, resources found this way override those in the Blorb
       file, if present.

       This feature can be useful to game designers, as it eases changing  and  adding  resources
       without  having  to re-compile the Blorb file each time.  The format of the list file used
       with the -@ option (see EXAMPLE BLC FILE) is identical to that of  the  BLC  control  file
       used by L. Ross Raszewski's iblorb package, so one can use the same list for compiling the
       final Blorb file for distribution.

TRUETYPE FONTS

       Sfrotz can display text with Truetype  or  Type1  fonts,  using  the  FreeType2  rendering
       library.  The  location  of  the necessary font files must be specified in the setup file.
       Also, antialiased rendering of Truetype fonts can be  specified.  Please  note  that  this
       feature  in  sfrotz  is still experimental, so don't expect too much (e.g., kerning is not
       supported).

DEFAULT FONTS

       Sfrotz does not need Truetype fonts to work; in fact it has  a  default  monospaced  font,
       based  on an 8x16 VGA font, which can be used for both the TEXT_FONT and the FIXED_FONT of
       the z-machine, with suitable (though not very nice) modifications for the various  styles.
       Even  if  Truetype  fonts are specified in the setup file, Sfrotz can be forced to use the
       VGA font by the -V command line switch.

UNICODE

       Sfrotz supports Unicode glyphs by way of UTF-8 as long as the  fonts  loaded  contain  the
       glyphs  you need.  The default font provided by SDL does not contain much beyond the Latin
       alphabet and some diacritical marks.  Inverted punctuation marks as used  in  Spanish  are
       missing.   Two  monospaced  fonts  known  to  work  well  with  most  commonly-encountered
       alphabetic   languages   are   Leggie   and   FreeMono.   They    can    be    found    at
       https://memleek.org/leggie/  (X11  BDF  fonts)  and https://www.gnu.org/software/freefont/
       (Truetype fonts). Logographic glyphs (Kanji and Chinese are not currently supported.

ENVIRONMENT

       If the ZCODE_PATH environmental variable is defined, Sfrotz will search that path for game
       files.  If that doesn't exist, INFOCOM_PATH will be searched.

SETUP FILE

       On  startup,  sfrotz will check $HOME/.sfrotzrc for setup information.  The setup file has
       four sections: Interpreter, Display, Fonts, and Resources.

       The Interpreter section deals with options having to do with how the Frotz core works.

       The Window section deals with screen display.  Sfrotz has a hardwired default screen  size
       of  640x400.  The  screen size can be changed by the values in this section, by the values
       found in the Reso chunk of a Blorb file, and finally by the -w and -h command line options
       (in  that  order).   Note however that sfrotz shall refuse to set a screen width less than
       640 and/or a height less than 400.

       NOTE: for normal (windowed) usage, the screen size should obviously be less  than  the  PC
       screen  resolution  (taking  into  account  also  window  decorations,  taskbars etc.) For
       fullscreen usage, the size should preferably be one of those supported  by  the  PC  video
       driver;  otherwise,  SDL shall try to use the next higher available resolution, with black
       borders around the z-machine screen. In fullscreen mode, however, it may happen  that  for
       some  strange  resolutions SDL accepts the request, but the screen goes blank... In such a
       case, you may shut down the program by pressing Ctrl-Alt-X.

       The Display section is reserved for future developments.

       The Fonts section is for defining the font directory, font files, and if  antialiasing  is
       enabled (which is currently not supported).

       The   following   eight   statements:  textroman,  textbold,  textitalic,  textbolditalic,
       fixedroman, fixedbold, fixeditalic, and fixedbolditalic; specify the eight font faces used
       by  the  z-machine (not counting the so-called graphics font used in Beyond Zork, which is
       hardwired in the program), that is the normal TEXT_FONT  and  the  monospaced  FIXED_FONT,
       each  in  four styles (roman, bold, italic and bold+italic). A single face is specified by
       the file name (with its  suffix!),  optionally  followed  by  an  @  sign  and  a  number,
       indicating  the font size in pixels (default is 14). Multiple face files can be specified,
       separated by pipe (|) characters; Sfrotz shall use the first one it finds (see the example
       in  EXAMPLE  SETUP FILE). This feature allows e.g. to use the same setup file on different
       systems.

       The Resources section is for configuring graphics and sound resources.  Each template must
       contain  exactly  one  C-style decimal format specifier (e.g. Pict%d) to be substituted by
       the resource number.

SETUP FILE GRAMMAR

       [Interpreter]

       Number = number
         Set the interpreter number (default is 4, i.e. Amiga Interpreter)

       Error Reporting = level
         Set the error reporting level (same as the -Z option)

       Ignore Errors = 0/1
         Ignore (1) or not (0) non-fatal runtime errors.

       Expand Abbreviations = 0/1
         Set/reset expansion of g/x/z abbreviations. Expansion is useful for old v1  games  which
         do not understand such abbreviations. Default: 0 (the -xoption can set this switch.)

       Tandy Bit = 0/1
         Set/reset the Tandy bit. Default: 0 (the -t option can set this switch.)

       Wrap Script Lines = nc
         Set the width (number of columns) of the transcript to nc. Same as -S option.

       SaveNames = date/name
         Set  the  mode  (date or name) for creating default file names for save/script etc.  For
         date, a timestamp is prepended to the filename extension.  For name, a four-digit number
         beginning with 0000 is prepended to the filename extension.

       [Window]

       AcWidth = width
         Set the screen width in pixels (default: 640)

       AcHeight = height
         Set the screen height in pixels (default: 400)

       [Display]

       (This section reserved for future developments)

       [Fonts]

       antialias = 0/1
         Set  antialiased  rendering  of  Truetype fonts off (0) or on (nonzero).  Note that this
         option cannot be overridden by a command line switch.

       fontdir = folder
         Specify the directory containing the Truetype fonts.  If this  does  not  begin  with  a
         slash, then the directory is assumed to be relative to the user's home directory.

       textroman = fontspec
         Set the font file for TEXT_FONT, roman style.

       textbold = fontspec
         Set the font file for TEXT_FONT, bold style.

       textitalic = fontspec
         Set the font file for TEXT_FONT, italic style.

       textbolditalic = fontspec

       fixedroman = fontspec
         Set the font file for FIXED_FONT, roman style.

       fixedbold = fontspec
         Set the font file for FIXED_FONT, bold style.

       fixeditalic = fontspec
         Set the font file for FIXED_FONT, italic style.

       fixedbolditalic = fontspec
         Set the font file for FIXED_FONT, bold and italic style

       [Resources]

       Dir = folder
         Specify the folder for individual graphics/sound resource files.

       Pict = template
         Template for picture resource files.

       Snd = template
         Template for sound resource files.

EXAMPLE SETUP FILE

       # The # denotes the start of a comment
       # Everything after the # is ignored, up to the end of the line

       [Interpreter]
       SaveNames=date

       [Window]
       # The following entries are commented out
       # but they are the same as the hardwired defaults, anyway
       #AcWidth = 640
       #AcHeight = 400

       [Display]

       [Fonts]
       antialias=1
       fontdir=/usr/share/fonts/truetype/freefont
       textroman=arial.ttf@16|FreeSans.ttf@16
       textbold=arialbd.ttf@16|FreeSansBold.ttf@16
       textitalic=ariali.ttf@16|FreeSansOblique.ttf@16
       textbolditalic=arialbi.ttf@16|FreeSansBoldOblique.ttf@16
       fixedroman=cour.ttf@16|FreeMono.ttf@16
       fixedbold=courbd.ttf@16|FreeMonoBold.ttf@16
       fixeditalic=couri.ttf@16|FreeMonoOblique.ttf@16
       fixedbolditalic=courbi.ttf@16|FreeMonoBoldOblique.ttf@16

       [Resources]
       Dir=./        # the current dir
       Pict=PIC%d    # i.e. PIC1, PIC2, ...
       Snd=SND%d     # i.e. SND3, SND4, ...

EXAMPLE BLC FILE

       Exec 0 ZCOD ani.z6

       Snd 13 FORM busyalone.au.aiff
       Snd 12 FORM s0020.au.aiff
       Snd 11 FORM s0154.au.aiff
       Snd 10 FORM s1484.au.aiff

       Pict 10 PNG edleft.png0.png
       Pict 11 PNG edleft.png1.png
       Pict 12 PNG edleft.png2.png
       Pict 13 PNG edleft.png3.png
       Pict 14 PNG edleft.png4.png
       Pict 15 PNG edleft.png5.png

       Pict 16 PNG lauhoh.png0.png
       Pict 17 PNG lauhoh.png1.png
       Pict 18 PNG lauhoh.png2.png

       Pict 19 PNG edfront.png0.png
       Pict 20 PNG edfront.png1.png
       Pict 21 PNG edfront.png2.png
       Pict 22 PNG edfront.png3.png
       Pict 23 PNG edfront.png4.png
       Pict 24 PNG edfront.png5.png

       Pict 25 PNG hoagie.png0.png
       Pict 26 PNG hoagie.png1.png

       Pict 30 PNG dott0.png

FURTHER INFORMATION

       The Frotz homepage is at https://661.org/proj/if/frotz/.

       A  git(1)  repository  of  all versions of Unix Frotz back to 2.32 is available for public
       perusal here:
       https://gitlab.com/DavidGriffith/frotz/.

       The bleeding edge of Frotz development may be followed there.

       The Interactive Fiction Archive is a good place to find games to play with Frotz.  Various
       ports and builds for Frotz may also be found here.  Here is its URL:
       http://www.ifarchive.org/

       Most distributions of Linux and BSD include Frotz in their package repositories.

       It  is  distributed under the GNU General Public License version 2 or (at your option) any
       later version.
       https://www.gnu.org/licenses/gpl-2.0.en.html

       This software is offered as-is with no warranty or liability.  If you find a bug or  would
       like  Frotz to do something it doesn't currently do, please visit the above Gitlab website
       and report your concerns.

CAVEATS

       The Z Machine itself has trouble with the concept of resizing a terminal.  It assumes that
       once the screen height and width are set, they will never change; even across saves.  This
       made sense when 24x80 terminals were the norm and graphical user  interfaces  were  mostly
       unknown.   I'm fairly sure there's a way around this problem, but for now, don't resize an
       xterm in which frotz is running.  Also, you should try to make sure the terminal on  which
       you restore a saved game has the same dimensions as the one on which you saved the game.

       Audio  latency  might  be  unreasonably  long  depending on the settings of your operating
       system.  Linux generally has things right.  The BSDs  may  need  some  sysctl(8)  settings
       adjusted.  See the sound(4) or audio(4) manpages for more information.

       This  manpage is not intended to tell users HOW to play interactive fiction.  Refer to the
       file HOW_TO_PLAY included in the Unix Frotz documentation or visit one  of  the  following
       sites:
       http://www.microheaven.com/ifguide/
       http://www.brasslantern.org/beginners/
       http://www.musicwords.net/if/how_to_play.htm
       http://ifarchive.org/

BUGS

       This  program  has  no  bugs.   no bugs.  no bugs.  no *WHAP* thank you.  If you find one,
       please report it to the Gitlab site referenced above in FURTHER INFORMATION.

AUTHORS

       frotz was written by Stefan Jokisch for MSDOS in 1995-7.
       The SDL port was done in 2009 by Aldo Cumani and is currently maintained by David Griffith
       <dave@661.org>.

SEE ALSO

       frotz(6) dfrotz(6) nitfol(6) rezrov(6) jzip(6) xzip(6) inform(1)