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