rezrov - an Infocom game interpreter
DESCRIPTION
Rezrov is an implementation of a z-machine written in pure Perl. In
other words, it's a program that can play Infocom games, such as Zork.
Its chief distinguishing feature from other z-code interpreters is a wide
array of cheat commands. Full documentation, in POD format, can be
found embedded in the file "rezrov".
For online documentation, screenshots, etc. visit:
http://edmonson.paunix.org/rezrov/
Rezrov's old home was http://www.voicenet.com/~mikeedmo/rezrov/.
COPYRIGHT
Copyright (c) 1998-(1900+(localtime)[5])
Michael Edmonson .
All rights reserved. This program is free software; you can
redistribute it and/or modify it under the same terms as Perl itself.
REVISION HISTORY
0.20 Sat Mar 6 14:05:56 EST 2010
- six years to the day since last update, maybe it's time...
- various new cheat commands:
- Enchanter series:
- "gmacho": emulate "gnusto" spell: copies ANY spell
to spellbook, even powerful ones where this is not
normally allowed
- "verdelivre": attempt to copy ALL spells to spellbook
- "angiotensin": automatically manage blood pressure
in "Bureaucracy"
- "voluminus": expand capacity of a container
(Zork I only at the moment)
- bug fixes:
- fix inappropriate typo correction
- "omap" cheat fixed in Sorcerer (premature end to object
list parsing)
- ZIO_Tk: various fixes
- ZIO_Win32: screen buffer size fix
- new ZIO_Test.pm, simplest possible ZIO, good for testing
and accepting commands from STDIN. Maybe now CPAN testing
will work more consistently...
- thanks to "Oliver Klozoff" (nee Stephen Oberholtzer)
and Neil Bowers for bug reports and patches.
0.19 Sat Mar 6 15:30:00 EST 2004
- Optional speech synthesis ("-speak") and recognition ("-listen").
This only works under win32 at the moment, using the optional
Win32::SAPI4 module. For more details see the full rezrov
POD documentation.
- termcap interface improvements: all lines on screen should
be available now if terminal has "cs" capability
- optional typo correction, a-la Evin Robertson's
Nitfol interpreter. Enabled by default; toggle with
"#typo", or "-typo 0" on the command line.
- Term::ReadLine usage cleanups:
- Term::ReadLine::Perl seems to erase the line before prompting,
while Term::ReadLine::Gnu doesn't. Since the prompt has
been printed by the game before readline is invoked, if using
Gnu version, attempt to erase it so we don't wind up seeing
two prompts.
- centralize readline access between termcap/dumb interfaces
- test.pl: should always work, no really (even if not running
on a tty; CPAN testers, I'm looking in your direction)
- improved "help" handling under win32
- manual_install.pl: "-u" switch to uninstall.
0.18 Wed Feb 4 22:31:08 EST 2004
- cleanup/bugfix release
- various fixes to pass Amir Karger's "czech" test suite (ver. 0.8)
- 2 silly new cheats, which only work in Zork I for now:
- "vilify": make an object attackable
- "baste"/"nosh": make an object edible
- improved test routine (should work with automated testing systems now)
- manual_install.pl for Windows and other platforms without "make"
- auto-disabled (problematic) title guessing for Beyond Zork and sampler
- cleaned up a few annoying warning messages (termcap, tk, win32)
- fixed "lingo" cheat crash (ahem)
- slightly smarter "help" handling
0.17 Sun Jun 13 16:18:49 EDT 1999
- new cheat commands:
- "lummox": remove restrictions on number and weight of
items that may be carried
- "systolic": lower blood pressure ("Bureaucracy" only)
- optimizations:
- many simple methods inlined via more regexp/eval munging
(see InlinedPrivateMethod.pm)
- tweak opcode/operand loading
- runs between 7-10% faster.
- interface fixes:
- Tk:
- arrow keys now work in Beyond Zork
- Bureaucracy scrolling pause now works correctly
- code is less hideous
- Curses: backspace more reliable
- Termcap: screen attributes reset correctly
- Win32::Console: buffer keypresses
- "-24h" flag, show time games in 24-hour time rather than AM/PM
- "teleport" to character locations in Suspect now works.
- various miscellaneous fixes
0.16 Sun Mar 7 20:50:43 EST 1999
- more optimizations:
- ZFrame.pm gone, call stack now in StoryFile.pm
- a bit more "macro"-style inlining
- StoryFile.pm is now completely static; oh well,
it was never truly OO anyway.
- overall about 20-25% faster. Don't know if I can
speed it up any more. Suggestions very welcome!
- perl 5.005 is now required.
- tentative support for new v8 games; "anchorhead.z8" starts,
but looks like you'll need a gHz to play it :/
- new cheat command: "spiel", decode *all* game text.
Can reveal easter eggs, debug messages, and all-around
interesting things you may have missed; see documentation
- partial support for character graphics in Tk and Curses
interfaces; Beyond Zork now works much much better.
[see screenshots at WWW site above]
- fix a few bugs with interactions between undo/restore and
some cheat commands
- fix Quetzal compatibility bug
0.15 Sun Jan 24 17:41:39 EST 1999
- Optimizations:
- some memory-access and variable casting functions
inlined using regexp/eval hack (blech).
- hand-inline opcode loading
- cache object properties
- overall seems to run between 15-25% faster.
- packages renamed from Rezrov:: to Games::Rezrov (for CPAN)
- new cheat commands:
"travis": attempts to fool the game into thinking the item
you specify is a weapon. Zork I only for now;
slay the troll with your mighty leaflet.
"tail": automatically follow a character in a game as they
move from room to room
0.14 Sun Jan 10 20:35:53 EST 1999
- new cheat verb: "frotz" (only for some games).
Frotz, from the spell in "Enchanter", turns any item
into a light source, obviating the need for fuel/batteries.
See the documentation for full details.
- If you specify an item name for "teleport", it will take you
to the room containing the item
- now passes all "strictz.z5" object 0 torture tests
- the usual little tweaks and fixes
0.13 Sun Jan 3 22:15:46 EST 1999
- fixed color support (Tk, Curses, Win32 console)
- cheat commands:
- new commands: "rooms" and "items"
- "teleport" shows description of new room
- "pilfer" attempts to move pilfered item into inventory
- "omap" object dump more reliable
- more etude.z5 z-machine torture tests passed
- more code reorganization/thrashing
0.12 Tue Dec 1 21:16:26 EST 1998
- added Tk interface (works under both X and win32)
- i/o layer reorganized
- many little glitches fixed
0.11 Sat Oct 24 20:27:08 EDT 1998
- about 10-15% faster:
- cache game objects
- streamline handling of decoded text
- convert to blessed arrays instead of hashes
- A few more critical globals :(
- slightly improved v5 compatibility
- emulation of the "#reco", "#unre" and "#comm"
command-transcript commands
0.10 Sun Oct 18 20:07:19 EDT 1998
- first public release
PREREQUISITES
Rezrov is written in pure Perl, no extension compilation is required.
Perl version 5.005 or later is required.
Optionally supported but not required:
Tk (version 800.*)
Curses
Term::Cap
Win32::Console
Term::ReadLine
HOW TO BUILD AND INSTALL
See the manual instructions below if you have trouble.
perl Makefile.PL
make
make test
make install
After installation, run rezrov on a z-code file, such as the
provided minizork.z3: "rezrov minizork.z3".
MANUAL INSTALLATION INSTRUCTIONS (Windows, etc.)
On some platforms (e.g., binary distributions of Perl under Windows),
the "generic" instructions above probably won't work.
If you're feeling lucky, try running the provided
"manual_install.pl". This creates appropriate directories in your
Perl installation and copies everything where it needs to go. It
works for me under Windows XP, but I haven't tested other platforms
(please let me know one way or the other!).
EXTREMELY MANUAL INSTALLATION INSTRUCTIONS
The following are instructions on how to install rezrov by hand:
Rezrov consists of two basic pieces: a set of packages (*.pm files),
and a script called "rezrov". The *.pm files need to be installed
in a subdirectory called "Games/Rezrov" somewhere in Perl's module search
path (@INC). "rezrov" is the main wrapper program that requires these
modules to run; it can go anywhere you like.
For example, on a Windows 9x/NT/XP machine, using the ActiveState
distribution of Perl installed in C:\PERL, you would need to:
1. mkdir C:\perl\lib\site\Games
2. mkdir C:\perl\lib\site\Games\Rezrov
3. copy *.pm c:\perl\lib\site\Games\Rezrov
4. perl rezrov minizork.z3