XFROTZ(6)
π XFROTZ π (section 6 of the Games Manual, bestie)
okay so. hi. you're about to meet xfrotz, an interpreter for Infocom and other Z-Machine games with an X11 interface, and honestly? she's a whole vibe. let's get into it π¦
β¨ NAME β¨
xfrotz β the interpreter for Infocom and other Z-Machine games (X11 interface, periodt).
πΈ SYNOPSIS πΈ
xfrotz [options] file [blorb_file]
So like, you gotta give at least one file on the command line. That file 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 is the little bundle where audio, graphics, and other stuff get wrapped up together with the game into one single file β and it can also optionally hold the Z-Machine executable inside it too. Iconic, honestly.
If you hand it a plain Z-code file, Frotz will go looking for a Blorb file with the same base name but an extension of .blb, .blorb, or .zblorb, and load it if it finds one. π
If the file you gave it is a Blorb file, then Frotz checks whether a Z-code file is contained within. If not found? Frotz will complain and exit. like, it will simply not be doing that today π
You can also supply an alternatively-named Blorb file as the optional second parameter of the command line invocation.
And hiii, heads up: if you wanna play any of the Infocom games that use sound or graphics, you'll need a corresponding Blorb file from the Interactive Fiction Archive. See FURTHER INFORMATION below. π«Ά
π DESCRIPTION π
The xfrotz program is an Xlib-based interpreter for Z-machine code β that's the byte code used by Infocom games and, more recently, Inform. xfrotz supports versions 1 through 8 of the format, and it uses the standard Quetzal format for its saved games. no cap.
xfrotz supports Version 6 graphical games. Right now it supports color, and graphics (in the .mg1 format only) by way of Blorb archives or by parsing Infocom's original files. Sound is supported through OSS. she does it all π
β OPTIONS β
Okay bestie, listen. In each of the following options that enables some feature, replacing - with + explicitly disables that feature, overriding any X resources. Also, every option has a corresponding X resource, which is listed in parentheses right after the option name. slay.
-aaβ (class WatchAttribute, name watchAttrAssign) Enables watching of attribute assignment.-atβ (class WatchAttribute, name watchAttrTest) Enables watching of attribute testing.-bg <color>β (class Background, name background) Sets the default background color. In addition to the standard X color specification formats,xfrotzsupports the formatz:num, which refers to a z-machine color from 2 to 9.-c <number>β (class ContextLines, name contextLines) Specifies the number of context lines used. When scrolling large amounts of text,xfrotzpauses after each screenful with a[MORE]prompt; this option specifies how many lines of a previous screen it'll keep at the top of the next screen.-fg <color>β (class Foreground, name foreground) Sets the default foreground color. See-bgabove.-fn[-z|[f][b][i]] <font name>β (class Font, name font[Z|[F][B][I]]) Sets the fonts to be used for various styles. For example,-fn-fbisets the font for fixed, bold, italic text, and-fn-zsets the z-machine "picture font," which is used in Beyond Zork and Journey.-iβ (class IgnoreErrors, name ignoreErrors) Ignore runtime errors. This can be useful when runningxfrotzwith buggy story files which cause fatal errors. (buggy story files?? not the vibe, but okay π)-lm <number>β (class Margin, name leftMargin) Sets the left margin.-L <filename>β (class LoadThis, name loadthis) When the game starts, load this saved game file.-olβ (class WatchObject, name watchObjLocating) Enables watching of testing the location of objects.-omβ (class WatchObject, name WatchObjMovement) Enables watching of object movement.-pβ (class Piracy, name piracy) Enable branching on the@piracyopcode. This opcode is seldom used.-R <path>β (class Restricted, name restricted) Restricted read/write. Reading and writing files will be restricted only to the provided path. Ordinarilyxfrotzwill write or read its saves, transcripts, and move recordings in whatever path or directory the user provides when theSAVE,SCRIPT, orRECORDINGcommands are given. This can be undesirable ifxfrotzis run in a restricted environment, by a front end, or by a chatbot. This option will causexfrotzto write or read only to the provided path and nowhere else. Then the controlling process can watch that directory for changes and need not worry about someone scribbling or snooping who-knows-where. π΅οΈββοΈ-rm <number>β (class Margin, name rightMargin) Sets the right margin.-rs <number>β (class RandomSeed, name randomSeed) Set the random seed. By default, the random number generator is initialized based on the system clock; this lets you make the random number generator predictable, for use in recorded scripts or debugging.-sc <number>β (class ScriptColumns, name scriptColumns) Set the transcript width (default 80). Set to 0 to disable line splitting in transcripts.-tβ (class Tandy, name tandy) Set the z-machine's Tandy bit, which affects the behavior of certain Infocom games. For example, Zork I pretends not to have sequels, and Witness has its language censored. (the DRAMA π³)-u <number>β (class UndoSlots, name undoSlots) Set the number of undo slots available. The default number is 25. Note that many Infocom games do not support an "undo" command, and most Inform games do not allow more than one "undo" at a time. Because of this, you may need to use the undo hotkey instead (see below).-xβ (class ExpandAbbrevs, name expandAbbrevs) With this option enabled,xfrotzExpand the abbreviationsg,x, andztoagain,examine, andwait. 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 useg,xorzfor different purposes. β οΈ-xrm <resources>β This allows setting resources on the command line.-zs <level>β (class ZStrict, name zStrict) Set the reporting level of "Vile Zero Error From Hell" bugs. The possible levels are:0to print no error messages,1to print just one error message and ignore subsequent errors (the default),2to print all error messages, or3to exit with a fatal error. Symbolic values ofnever,once,always, andfatal, respectively, are also accepted.
π RESOURCES π
xfrotz's resource class is XFrotz, and its resource name is the base name by which it was invoked, usually xfrotz.
In addition to the X resources listed above, there's one more set of resources: by setting colornum (class name Colornum) to the name of a color, you can change the meaning of the z-machine colors. Note that here the z:num syntax is not accepted. π
ββοΈ
π Z-MACHINE STANDARDS π
Frotz complies with the Z-Machine Standard 1.1 of May 2006, revised February 2014. The authoritative version lives here:
http://inform-fiction.org/zmachine/standards/z1point1/index.html
As of 1.1, an additional optional parameter prompt is allowed on Version 5 extended save/restore. This parameter allows a game to read or write an auxiliary (aux) file without prompting the player. See section 15 of the Standard for details. Frotz restricts such files to having an .aux filename extension. When the -R (restricted read/write) option is active, reads and writes through this mechanism are restricted to the provided path the same as all other file accesses.
π§ ENVIRONMENT π§
xfrotz supports the INFOCOM_PATH environment variable. This is a colon-separated list of pathnames in which xfrotz will search for the given story file. Any additional files required β like graphics files, sounds directory, or blorb files β must be in the same directory as xfrotz finds the story file. β¨
π HOTKEYS π
xfrotz supports several "hotkeys," which interrupt the currently running game to set options or perform certain actions.
Mod1+Dβ Sets debugging options by prompting the user. These options are equivalent to specifying-aa,-at,-ol, and-omon the command line.Mod1+Hβ Lists available hotkeys.Mod1+Nβ Starts a new game. Equivalent to therestartcommand supported by most games.Mod1+Pβ Starts or stops playback from a recorded script.Mod1+Rβ Starts or stops recording player input into a file.Mod1+Sβ Sets the random number generator seed.Mod1+Uβ Undoes one turn.Mod1+Xβ Exits the currently running game.
π₯ FURTHER INFORMATION π₯
The Frotz homepage is at https://661.org/proj/if/frotz/.
A git(1) repository of all versions of Unix Frotz from 2.32 to the bleeding edge is available for public perusal at https://gitlab.com/DavidGriffith/frotz/. (bleeding edge?? she's giving main character energy fr fr π
)
The Interactive Fiction Archive, at https://www.ifarchive.org/, is a good place to find games to play with Frotz. To play Infocom's games that use graphics or sound, you'll need to get corresponding Blorb files from there. Various ports and builds for Frotz may also be found at the IF Archive.
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 π
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 π
- If run on an 8-bit display,
xfrotzwill most likely leak the entire color palette, especially if displaying graphics. (not the palette leaking π) - The window size is fixed at
800x600, with pictures scaled to match; this scaling is hard coded. Also,xfrotzdepends on backing store instead of saving the screen's state. - If different fonts have different heights, the display might look a bit strange, and things might not line up as they should. This is especially apparent in menus.
- In order to change the fonts used, you would usually have to specify at least 4 fonts (for normal, bold, italic, and bold italic). This is extremely cumbersome. π
okay that's part 1 and there's more coming bestie, so don't go anywhere β π
π AUTHORS π
Okay so the origin story, because bestie deserves the lore:
- Frotz was written by Stefan Jokisch in 1995-7. Iconic behavior honestly, a whole era.
- xfrotz is an Xlib port written by Daniel Schepler, based in part on the Unix port by Galen Hazelwood and on WinFrotz by Rich Lawrence. A whole collab, the group project that actually ate. π
- The Unix port is currently maintained by David Griffith
<dave@661.org>β go say hi, be normal about it π«Ά
π SEE ALSO β¨
The friend group, the extended universe, the "if you liked this you should also streamβ¦" section, no skips:
Go read them all, collect them like stickers, you'll be so smart fr fr ππ
π And that's the whole page bestie, you made it to the end, lowkey proud of you. This was X11 Frotz v2.55, dated 2025-02-01, filed under XFROTZ(6). π
Now go play some interactive fiction, you've earned it. mwah πβ¨
π¦ where this page comes from
- fedora 43: frotz-gui 2.55-2.fc43 Β· GPL-2.0-or-later
- fedora 44: frotz-gui 2.55-3.fc44 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms