1FROTZ(6) Games Manual FROTZ(6)
2
3
4
6 frotz - interpreter for Infocom and other Z-Machine games
7
8
9
11 frotz [options] file [blorbfile]
12
13 At least one file must be specified on the command line. This can be
14 either a plain Z-code file or a Blorb file. A Z-code file is a com‐
15 piled executable for the Z-Machine. A Blorb file contains audio,
16 graphics, and other things in addition to the game wrapped up into a
17 single file. It can also optionally contain the Z-Machine executable.
18 If a plain Z-code file is supplied, then Frotz will check for a Blorb
19 file with the same base name but an extension of .blb, .blorb, or
20 .zblorb and load it if found.
21
22 If the file supplied on the command line is a Blorb file, then Frotz
23 will check to see if a Z-code file is contained within. If not found,
24 then Frotz will complain and exit.
25
26 An alternatively-named Blorb file can be supplied as the optional sec‐
27 ond parameter to the command line invocation.
28
29
30
32 Frotz is a Z-Machine interpreter. The Z-machine is a virtual machine
33 designed by Infocom to run all of their text adventures. It went
34 through multiple revisions during the lifetime of the company, and two
35 further revisions (V7 and V8) were created by Graham Nelson after the
36 company's demise. The specification is now quite well documented; this
37 version of Frotz supports version 1.0.
38
39 This version of Frotz fully supports all these versions of the Z-
40 Machine except for version 6. Version 6 is semi-supported by display‐
41 ing the outlines of V6 graphics with the picture number in the bottom-
42 right corner.
43
44
45
47 -a Watch attribute setting. Setting and clearing of attributes on
48 objects will be noted in debugging messages.
49
50
51 -A Watch attribute testing. Every time the Z-machine tests an
52 attribute value, the test and the result will be reported.
53
54
55 -b <colorname>
56 Sets the default background color. <colorname> corresponds to
57 one of the Z-machine colors, which are as follows:
58 black red green yellow blue magenta cyan white
59 If color support is disabled or not available on your terminal,
60 this option does nothing.
61
62
63 -c N Sets the number of context lines used. By default, after a
64 ``[MORE]'' prompt, and assuming there is enough output pending,
65 Frotz will allow all the currently visible lines to scroll off
66 the screen before prompting again. This switch specifies how
67 many lines of text Frotz will hold over and display at the top
68 of the next screen.
69
70
71 -d Disable color.
72
73
74 -e Enable sound. If you've disabled sound in a config file and
75 want to hear sound effects, use this.
76
77
78 -f <colorname>
79 Sets the default foreground color. <colorname> corresponds to
80 one of the Z-machine colors, which are as follows
81 black red green yellow blue magenta cyan white
82 If color support is disabled or is not available on your termi‐
83 nal, this option does nothing.
84
85
86 -F Force color mode. If you've disabled color in a config file and
87 want to Frotz to display colors, use this.
88
89
90 -h N Manually sets the text height. Though most curses libraries are
91 intelligent enough to determine the current width from the ter‐
92 minal, it may sometimes be necessary to use this option to over‐
93 ride the default.
94
95
96 -i Ignore fatal errors. If a Z-Machine interpreter encounters a
97 zcode error such as division-by-zero or addressing an illegal
98 object, the proper response is to abort execution. This is done
99 because the zcode program doesn't have a clear idea of what is
100 going on. There are some games out there that cause fatal
101 errors because the authors were careless and used an interpreter
102 that didn't properly check for errors. This option is intended
103 to get around such bugs, but be warned that Strange Things may
104 happen if fatal errors are not caught.
105
106
107 -I N Set the interpreter number. Infocom designed the Z-machine such
108 that a game could tell on what kind of machine the interpreter
109 was running. See INTERPRETER NUMBER below.
110
111
112 -l N Sets the left margin, for those who might have specific format‐
113 ting needs.
114
115
116 -L <filename>
117 When the game starts, load this saved game file.
118
119
120 -o Watch object movement. This option enables debugging messages
121 from the interpreter which describe the moving of objects in the
122 object tree.
123
124
125 -O Watch object location. These debugging messages detail the
126 locations of objects in the object tree.
127
128
129 -p Plain ASCII output only. This inhibits the output of accented
130 letters and other characters from the Latin-1 character set,
131 replacing them with reasonable alternatives. This may be neces‐
132 sary on devices lacking these characters.
133
134
135 -P Alter the piracy opcode. The piracy opcode was never used by
136 Infocom. This switch is really only useful for those who like
137 to toy around with Z-code.
138
139
140 -q Quiet. Turns off sound effects. Useful when running Frotz on a
141 remote machine and you don't want to bother whoever's near the
142 console with weird noises.
143
144
145 -r N Sets the right margin.
146
147
148 -R <path>
149 Restricted read/write. Reading and writing files will be
150 restricted only to the provided path. Ordinarily Frotz will
151 write or read its saves, transcripts, and move recordings in
152 whatever path or directory the user provides when the SAVE,
153 SCRIPT, or RECORDING commands are given. This can be undesir‐
154 able if Frotz is run in a restricted environment, by a front
155 end, or by a chatbot. This option will cause Frotz to write or
156 read only to the provided path and nowhere else. Then the con‐
157 trolling process can then watch that directory for changes and
158 need not worry about someone scribbling or snooping who-knows-
159 where.
160
161
162 -s N Set the random number seed value. The given seed value is used
163 as the initial seed value on every restart. This is helpful for
164 testing games like Curses which make random decisions before the
165 first input (such that the hot key Alt-S does not really help).
166
167
168 -S N Set the transcript width. By default your transcript files are
169 formatted to a width of 80 columns per line, regardless of the
170 current text width. This switch allows you to change this set‐
171 ting. In particular, use -S 0 to deactivate automatic line
172 splitting in transcript files.
173
174
175 -t Sets the Z-machine's Tandy bit, which may affect the behavior of
176 certain Infocom games. For example, Zork I pretends not to have
177 sequels, and Witness has its language toned down.
178
179
180 -u N Sets the number of slots available for Frotz's multiple undo
181 hotkey (see below). This defaults to twenty, which should be
182 sufficient for most purposes. Setting too high a number here
183 may be dangerous on machines with limited memory.
184
185
186 -w N Manually sets the text width.
187
188
189 -x Expand the abbreviations "g", "x", and "z" to "again", "exam‐
190 ine", and "wait". This switch is for use with old Infocom games
191 that lack these common abbreviations which were introduced in
192 later games. Use it with caution: A few games might use "g",
193 "x" or "z" for different purposes.
194
195
196 -Z N Error checking mode.
197 0 = don't report errors.
198 1 = report first instance of an error.
199 2 = report all errors.
200 3 = exit after any error.
201 Default is 1 (report first instance of an error).
202
203
204
206 These hot keys are enabled only when the Z-machine is waiting for line
207 input (for Z-machine experts: the @read opcode).
208
209
210 Alt-D Set debugging options.
211
212
213 Alt-H Help (print the list of hot keys).
214
215
216 Alt-N New game (restart).
217
218
219 Alt-P Playback on.
220
221
222 Alt-R Recording on/off.
223
224
225 Alt-S Set random number seed.
226
227
228 Alt-U Undo one turn.
229
230
231 Alt-X Exit game (after confirmation).
232
233
234
236 The interpreter number is a setting in the Z-machine header which is
237 used to tell the game on what sort of machine the interpreter is run‐
238 ning. Frotz will automatically choose the most appropriate number for a
239 given Infocom-produced game. Should you want to override the number,
240 the -I option is available.
241
242 An interpreter should choose the interpreter number most suitable for
243 the machine it will run on. In Versions up to 5, the main considera‐
244 tion is that the behaviour of 'Beyond Zork' depends on the interpreter
245 number (in terms of its usage of the character graphics font). In Ver‐
246 sion 6, the decision is more serious, as existing Infocom story files
247 depend on interpreter number in many ways: moreover, some story files
248 expect to be run only on the interpreters for a particular machine.
249 There are, for instance, specifically Amiga versions. The DECSystem-20
250 was Infocom's own in-house mainframe.
251
252 Infocom used the following interpreter numbers:
253
254
255 1 DECSystem 20
256
257
258 2 Apple IIe
259
260
261 3 Macintosh
262
263
264 4 Amiga
265
266
267 5 Atari ST
268
269
270 6 IBM PC
271
272
273 7 Commodore128
274
275
276 8 Commodore64
277
278
279 9 Apple IIc
280
281
282 10 Apple IIgs
283
284
285 11 Tandy Color
286
287
288
290 On startup, frotz will first check the system's frotz.conf then
291 $HOME/.frotzrc for configuration information. The configuration file
292 uses a simple syntax of
293 <variable> <whitespace> <value>
294
295
296 Color names may be any of the following:
297 black | red | green | blue | magenta | cyan | white
298
299
300
301 ascii on | off
302 Use plain ASCII only. Default is "off".
303
304
305 background <colorname>
306 Set background color. Default is terminal's default background color.
307
308
309 color yes | no
310 Use color text. Default is "yes" if supported.
311
312
313 errormode never | once | always | fatal
314 Set error reporting mode.
315 never Don't report any errors except for fatal ones.
316 once Report only the first instance of an error.
317 always Report every instance of an error.
318 fatal Abort on any error, even non-fatal ones.
319 Default is "once".
320
321
322 expand_abb on | off
323 Expand abbreviations. Default is off. Expand the abbreviations "g",
324 "x", and "z" to "again", "examine", and "wait". This switch is for use
325 with old Infocom games that lack these common abbreviations which were
326 introduced in later games. Use it with caution. A few games might use
327 the "g", "x", or "z" for different purposes.
328
329
330 foreground <colorname>
331 Set foreground color. Default is terminal's default forground color.
332
333
334 ignore_fatal on | off
335 Ignore fatal errors. If a Z-Machine interpreter encounters a zcode
336 error such as division-by-zero or addressing an illegal object, the
337 proper response is to abort execution. This is done because the zcode
338 program doesn't have a clear idea of what is going on. There are some
339 games out there that cause fatal errors because the authors were care‐
340 less and used an interpreter that didn't properly check for errors.
341 This option is intended to get around such bugs, but be warned that
342 Strange Things may happen if fatal errors are not caught.
343 Default is "off"
344
345
346 piracy on | off
347 Alter the piracy opcode. Default is off. The piracy opcode was never
348 used by Infocom. This option is only useful for those who like to toy
349 around with Z-code.
350
351
352 randseed <integer>
353 Set random number seed. Default comes from the Unix epoch.
354
355
356 sound on | off
357 Turn sound effects on or off. Default is "on".
358
359
360 tandy on | off
361 Set the machine's Tandy bit. This may affect the behavior of certain
362 Infocom games. For example, Zork I pretends not to have sequels, and
363 Witness has its language toned down. Default is "off".
364
365
366 undo_slots <integer>
367 Set number of undo slots. Default is 500.
368
369
370 zcode_path /path/to/zcode/files:/another/path
371 Set path to search for zcode game files. This is just like the $PATH
372 environmental variable except that you can't put environmental vari‐
373 ables in the path or use other shortcuts. For example,
374 "$HOME/games/zcode" is illegal because the shell can't interpret that
375 $HOME variable.
376
377
378 The following options are really only useful for weird terminals, weird
379 curses libraries or if you want to force a certain look (like play in
380 40-column mode).
381
382
383 context_lines <integer>
384 Set the number of context lines used. By default, after a ``[MORE]''
385 prompt, and assuming there is enough output pending, frotz will allow
386 all the currently visible lines to scroll off the screen before prompt‐
387 ing again. This switch specifies how many lines of text frotz will
388 hold over and display at the top of the next screen. Default is "0".
389
390
391 left_margin <integer>
392 Set the left margin. This is for those who might have special format‐
393 ting needs.
394
395
396 right_margin <integer>
397 Set the right margin. This is for those who might have special format‐
398 ting needs.
399
400
401 text_height <integer>
402 Manually set text height. Most curses libraries are intelligent enough
403 to determine the current width of the terminal. You may need to use
404 this option to override the default.
405
406
407 text_width <integer>
408 Manually set text width. Again, this should not be necessary except in
409 special circumstances.
410
411
412 script_width <integer>
413 Set the transcript width. Default is 80 columns per line, regardless
414 of the current text width. This switch allows you to change this set‐
415 ting. You may set this to "0" to deactivate automatic line-splitting
416 in transcript files.
417
418
419 The following options are mainly useful for debugging or cheating.
420
421
422 attrib_set on | off
423 Watch attribute setting. Setting and clearing of attributes on objects
424 will be noted in debugging messages. Default is "off"
425
426
427 attrib_test on | off
428 Watch attribute testing. Every time the Z-machine tests an attribute
429 value, the test and the result will be reported. Default is "off".
430
431
432 obj_loc on | off
433 Watch object location. These debugging messages detail the locations
434 of objects in the object tree. Default is "off".
435
436
437 obj_move on | off
438 Watch object movement. This option enables debugging messages from the
439 interpreter which describe the movement of objects in the object tree.
440 Default is "off".
441
442
444 Whether or not Frotz will display color depends upon the curses library
445 and the terminal. In general, an xterm or other X11-based terminal
446 emulator will support color. Sometimes the value of $TERM will need to
447 be set to something like "xterm-color" or "rxvt-256color". For a Linux
448 console, $TERM is almost always set to "linux". This will support
449 color. For a NetBSD or OpenBSD console on an x86 or amd64, the default
450 value of $TERM is "vt100". To get color supported there, you need to
451 set $TERM to "pc3". A FreeBSD console's $TERM is "xterm" and will sup‐
452 port color. Color on text consoles on machines other than x86 or amd64
453 is untested.
454
455 On some operating systems, Xterm will not change the cursor color to
456 match that of the text. To fix this, add the following line to your
457 .Xresources file and type xrdb -merge $HOME/.Xresources
458
459 xterm*cursorColor: *XtDefaultForeground
460
461 This can also be added to a systemwide file such as /etc/X11/Xre‐
462 sources/x11-common or /etc/X11/app-defaults/XTerm. The names and loca‐
463 tions of the system-wide files can vary from OS to OS.
464
465
467 Frotz supports Unicode glyphs by way of UTF-8 if the terminal used sup‐
468 ports UTF-8. If you prefer using xterm, start it as uxterm. This is a
469 wrapper script that sets up xterm with UTF-8 locale. You can also man‐
470 ually tell an xterm to switch into UTF-8 mode by holding CTRL and the
471 right mouse button to bring up the VT FONTS menu. Depending on how
472 xterm was installed, you may see an option for "UTF-8 Fonts" which will
473 allow Unicode to be properly displayed.
474
475 Getting normal xterm to behave like this all the time can vary from
476 system to system. Other terminal emulators have their own ways of
477 being set to use UTF-8 character encoding.
478
479
480 LOCALE
481 An important means of ensuring the system knows to use UTF-8 is to make
482 sure the locale is set appropriately. This is valid only when Dumb
483 Frotz runs under Unix-ish systems.
484
485 Using the command locale will tell you what is currently in use. Using
486 locale -a
487
488 will show you what's available. Then set your LANG evironmental vari‐
489 able to something appropriate by using one of these commands:
490
491 export LANG=C.UTF-8
492 export LANG=en_US.utf8
493
494 This can be put in your shell configuration file, be it .profile,
495 .bash_profile, .login, .bashrc, or whatever.
496
497 It can also be set system-wide in the equivalent files in /etc.
498
499
500 SEE ALSO
501 ash(1) bash(1) csh(1) ksh(1) sh(1) zsh(1)
502
503
504
506 If the ZCODE_PATH environmental variable is defined, frotz will search
507 that path for game files. If that doesn't exist, INFOCOM_PATH will be
508 searched.
509
510 For the Alt key to be read correctly in an Xterm, the following lines
511 should be in your .Xresources file:
512
513 XTerm*metaSendsEscape: true
514 XTerm*eightBitInput: false
515
516
517
519 The Frotz homepage is at https://661.org/proj/if/frotz/.
520
521 A git(1) repository of all versions of Unix Frotz back to 2.32 is
522 available for public perusal here:
523 https://gitlab.com/DavidGriffith/frotz/.
524
525 The bleeding edge of Frotz development may be followed there.
526
527 The Interactive Fiction Archive is a good place to find games to play
528 with Frotz. Various ports and builds for Frotz may also be found here.
529 Here is its URL:
530 http://www.ifarchive.org/
531
532 Most distributions of Linux and BSD include Frotz in their package
533 repositories.
534
535
536
538 The Z Machine itself has trouble with the concept of resizing a termi‐
539 nal. It assumes that once the text height and width are set, they will
540 never change; even across saves. This made sense when 24x80 terminals
541 were the norm and graphical user interfaces were mostly unknown. I'm
542 fairly sure there's a way around this problem, but for now, don't
543 resize an xterm in which frotz is running. Also, you should try to
544 make sure the terminal on which you restore a saved game has the same
545 dimensions as the one on which you saved the game.
546
547
548 Audio latency might be unreasonably long depending on the settings of
549 your operating system. Linux generally has things right. The BSDs may
550 need some sysctl(8) settings adjusted. See the sound(4) or audio(4)
551 manpages for more information.
552
553
554 You can use a path like "/usr/local/games/zcode:$HOME/zcode" with
555 $ZCODE_PATH or $INFOCOM_PATH because the shell will digest that $HOME
556 variable for you before setting $ZCODE_PATH. While processing
557 frotz.conf and $HOME/.frotzrc, a shell is not used. Therefore you can‐
558 not use environmental variables in the "zcodepath" option within the
559 config files.
560
561
562 This manpage is not intended to tell users HOW to play interactive fic‐
563 tion. Refer to the file HOW_TO_PLAY included in the Unix Frotz docu‐
564 mentation or visit one of the following sites:
565 http://www.microheaven.com/ifguide/
566 http://www.brasslantern.org/beginners/
567 http://www.musicwords.net/if/how_to_play.htm
568 http://ifarchive.org/
569
570
571
573 This program has no bugs. no bugs. no bugs. no *WHAP* thank you. If
574 you find one, please report it to the Gitlab site referenced above in
575 FURTHER INFORMATION.
576
577
578
580 Frotz was written by Stefan Jokisch for MSDOS in 1995-7.
581 The Unix port was done by Galen Hazelwood.
582 The Unix port is currently maintained by David Griffith <dave@661.org>.
583
584
586 In 2019, a Kickstarter campaign was run to raise funds to pay Mark
587 McCurry to overhaul the audio subsystem for the curses port of Frotz.
588 The following people contributed $100 towards that effort:
589 Simon Martin
590 Dan Sanderson
591 Justin de Vesine
592 Daniel Sharpe
593
594
596 sfrotz(6) dfrotz(6) nitfol(6) rezrov(6) jzip(6) xzip(6) inform(1)
597
598
599
600 2.51 FROTZ(6)