Recently seen on Amir's monitor (pardon the Windows-ness):
C:\Amir\Perl\Parrot\ParrotZ>perl plotz.pl story\minizork.z3
Unimplemented opcode read at 15520
Unimplemented opcode restart at 22205
Unimplemented opcode restore at 22217
Unimplemented opcode save at 22367
Unimplemented opcode input_stream at 22821
Unimplemented opcode output_stream at 22859
MINI-ZORK I: The Great Underground Empire
Copyright (c) 1988 Infocom, Inc. All rights reserved.
ZORK is a registered trademark of Infocom, Inc.
Release 34 / Serial number 871124
West of House
You are standing in an open field west of a white house, with a boarded
or. You could circle the house to the north or south.
There is a small mailbox here.
>Undefined subroutine &main::unimplemented_read called at
The point here is that:
(1) I'm able to translate a Z-code file into a Perl file
(2) I'm able to implement enough stuff to get minizork (a smaller,
publicly released Zork I) started, (almost) correctly printing out some
stuff, up until the famed '>' prompt.
(3) There's still a few crucial opcodes I haven't implemented, like the
one that reads in and parses a command.
I'm excited enough about #1 and #2 that #3 doesn't depress me too much.
As you can see from the plotz.pl printout, what I still have left to do
is game state and I/O. Which unfortunately happen to be the hard
parts, but it turns out I can steal a lot of them from Games::Rezrov.
I've implemented some 70 opcodes. Another 6 opcodes gets me minizork.
Four more gets me two-thirds of all released Infocom games. Neat!
Btw, a quick search on Google Groups tells me I haven't yet mentioned
what plotz stands for:
Pol(l)y-Lingual Opcode Translation for the Z-machine
plotz parses Z-files. It then (in theory) has hooks that allow a coder
to write a module that'll output a translation in (almost) whatever
language she wants. The plan is that once I get minizork working (which
I believe will take me another n weeks, where n is a nybble), I'll
start working on PIR output from plotz (which will take another N
months, where N is an (unsigned) byte). Then of course I get to start
working on the original project behind all of this, which is getting
Parrot to run Z-code natively. Of course, by that time, Parrot will
probably be running on nanobots in our red blood cells, so you'll be
able to run Z-code REALLY natively.
Do you Yahoo!?
The New Yahoo! Shopping - with improved product search
> ... Of course, by that time, Parrot will
> probably be running on nanobots in our red blood cells, so you'll be
> able to run Z-code REALLY natively.
Great work and ... hmm not sure 'bout that nanobot stuff, or at least,
I'm waiting for the --secure runmode switch for parrot :)