The Visible Zorker 2

Monday, January 5, 2026

Comments: (live)

Tagged: if, interactive fiction, zork, infocom, zil, zarf

Hey, remember the Visible Zorker last year? Meet the Visible Zorker 2: The Visible Wizard of Frobozz!

A screenshot titled "The Visible Zorker 2". The left side of the window shows the opening of Zork 2, up to the command TURN ON LAMP. The right side shows a list of ZIL function calls and the message "The lamp is now on." It doesn't have a subtitle really. I just like saying "Visible Wizard of Frobozz".

If you don't remember last year (Zog knows I have trouble too), here's the idea: You play Zork 2 in the left pane. The right pane shows everything that happens under the hood as you play. The functions that were executed to carry out your command, the object tree, the variables, the timers... everything. Click on anything to highlight its source code.

See last year's post for the baroque details. Since then, I've added a few more views, including a map that displays your location live. (Zork 1 has been similarly updated.)

Part of the map of Zork 2, north of the Carousel Room.

Once again, I've written up commentary on bits of the source code that struck my interest. Click any green eyeball button to show its commentary note.

The VZ2 source code is available. Of course, there's a great deal of overlap with the VZ1 source code. I've broken the common parts out into their own repository, which is now a submodule of VZ1 and VZ2.

Obviously -- I don't even know why I mention it -- this project is massive all-over SPOILERS for Zork.


Why now?

A year ago, as you recall, I wasn't very excited about doing Zork 2. The first one was fun; it was a nice resume boost; I was happy to stop there. So what changed?

Most obviously, Microsoft released all three original Zork games as open source. I figured I should respond to that. You gotta reward good behavior, right?

Of course, I did the original Visible Zorker before the games were open source. I scoff at copyright law! Well, no: I think copyright law is generally a good thing. But like I said in 2019, history matters. I did the work, in part, to demonstrate why the Infocom legacy should be treated as a community resource. And now it is -- at least this part of it.

Any Easter eggs?

Hit the commentary button for the I-WIZARD routine (see the "Timers" tab). You'll find an option to force the Wizard to cast any of his spells on you. This is handy for exploring rare special effects.

Anything cool turn up?

Oh, the usual wacky details. I was reminded that the Wizard's FANTASIZE spell doesn't work at all in this version of Zork 2. (Release 48, the Masterpieces CD version.) We've known that for a while though.

If you get the wand and cast FLUORESCE on an object, not only is the spell permanent (same as when the Wizard does it) but the fluorescing object magically gains a power switch!

>wave wand at rose The wand grows warm, the perfect rose seems to glow dimly with magical essences, and you feel suffused with power.

>say "fluoresce" The wand glows very brightly for a moment. The perfect rose begins to glow.

>turn off rose The perfect rose is now off.

>turn on rose The perfect rose is now on.

There's a couple of places where the compiler skips over a <TELL> line, omitting the string from the compiled game. This seems to be a size optimization for routines that are never called. (See <BLAST>.) But (a) why not skip the entire function and save even more space? And (b) in <V-ODYSSEUS> it skips some code that is called, resulting in a bug: typing ODYSSEUS just prints a blank line. This might be evidence of a ZIL compiler bug in the %<COND> compile-time directive.

So, on to Zork 3?

...Let's say the chances are high. But I'll save that announcement for a bit. Watch this space, honorable readers!


Comments from Mastodon (live)

Please wait...