Thursday, April 4, 2019

Zource-diving

Zork had finally defeated my efforts to beat it fair and square. Reviewing my todo list, I could not find any way into the crypt in Hades, or make any headway at the top of the well. I’d been saving the volcano for last, since going there meant sacrificing my torchlight and relying on the remaining lantern fuel to guide me through the rest of the game, but as I was stuck, I backed up my save, went ahead to the glacier room, melted the ice, and proceeded to try solving the volcano and seeing if it would bring any items I could use at the well (and it didn’t, but I get ahead of myself).

In the balloon at the base of the volcano, there was a receptacle for fuel. What could make good fuel? There was that lump of coal, but I already used it to make a diamond, which I’m pretty sure is the intended use. There was that giant pile of leaves covering the grate room, but it wouldn’t fit in the receptacle, and my various attempts to put leaves in a few at a time didn’t work. There was that timber from the coal mines, but it too wouldn’t fit. I tried chopping it with my sword, which unsurprisingly didn’t work, but it was worth a try.

Reviewing the big collection of junk I amassed in the living room, I decided the newspaper, which had been in the living room since the start of the game, was the next best thing to light on fire. There were a few notes, papers, the leaflet from the mailbox, but a newspaper had more fuel, and sure enough, it worked. The balloon rose up through the volcano (all that from just a newspaper?), giving me access to the ledges I had seen so long ago, where I could land, moor the balloon, and explore.

The first ledge had a golden zorkmid, and an exit leading to a library with four colored books, but reading them all proved a waste of time.

The second ledge had an exit leading to a dusty room with a rusty old box that I couldn’t open or take. Restoring, I reviewed my collection of junk to see if something I had could pry it open, but this stood out:

There is a square brick here which feels like clay.

That isn’t masonry!

Taking the brick and a wire fuse up to the top, I inserted the brick into the box, the wire into the brick, and lit it with a match, left, came back, and found the box blown up revealing a golden crown and a card, which read:

Warning:
    This room was constructed over very weak rock strata.  Detonation
of explosives in this room is strictly prohibited!
                        Frobozz Magic Cave Company
                        per M. Agrippa, foreman


I left the dusty room and it promptly collapsed behind me, and the ledge soon after. I had gained a zorkmid, four books, a crown, and a warning card, but couldn’t see how any of this, or anything else helped me steal the white sphere. Swapping it for the books, crown, another sphere, or even a sack full of sand from the sandy beach didn’t work.

And so finally, my effort to beat Zork fairly had failed. Only two problems remained known and unsolved, and I was quite stuck on both of them.

I didn’t quite need to turn to the Internet yet. The source code was right there on my hard drive, and though I don’t know MDL, and I haven’t used its parent LISP since college, I figured I could probably make a reasonably good interpretation on what parts of the code mean.

Searching for clues related to the string “sphere” showed me two interesting things. First, that you could look into the spheres. Second, that the robot near the white sphere can be ordered to “raise cage.” The deathtrap in the dingy closet had dropped a cage on me and sprayed poison gas, so perhaps I just needed some robotic aid in escaping?

First thing, though, I reverted to my save from before this session so that I could keep using my torch. And I took a moment to look into the blue sphere that I already stashed, which revealed a “sooty room,” coated with coal dust. A hidden room near the coal mine?

Back in the machine room, I ordered the robot into the closet and followed. I took a moment to look into the white sphere, and saw a vision of the living room.

I took the sphere, and a cage crashed down, but I didn’t die immediately, and I ordered the robot to raise the cage, which it did, and I left.

I think this puzzle is made unfair by the fact that taking the sphere when you’re alone just kills you immediately. If you had a few turns to helplessly struggle before the poison killed you, it would have been a clue that you’re supposed to escape the trap, and I think I could have figured out the solution. As it stands, the events make it seem like you must avoid the trap, which is impossible.

The blue sphere alerted me to a new task – find the sooty room. Being covered in coal dust, it seemed logical to find it near the coal mine. And there was a slide near its entrance. A coal chute? And perhaps I could descend it slowly by tying the rope to something?

I went to the dome room to retrieve the rope. It wasn’t there!

I had previously seen random junk strewn about the dungeon. Always junk I had seen before and declined to take with me – the useless gear from the dead adventurer in the maze, a big piece of timber, even the bird’s nest from which I had stolen an egg. I imagine the thief also wanders around, picks up just about anything, and discards them randomly. And he must have taken the rope that I left tied to the railing so long ago.

I re-explored every room that I could in search for the rope, and simply couldn’t find it. Was it possible that the thief hid it in the torch room below?

Unable to find the rope, I restarted the game, and replayed everything up to the point of stealing the white sphere, making sure to take everything I could, as soon as I could, leaving it all in the living room where the thief never seemed to tread. The coal mine area took the longest to clear out, needing a separate trip to get the large piece timber, two puzzles requiring possession of both the bulky lamp and torch, and repeated back-and-forthing through the maze to get the coal, put it in the basket, go back to the machine, make the diamond, and finally exit with all the treasure.

With everything as it was before, rope now in hand, I went to the slide and couldn’t find anything there to anchor my rope to. I thought maybe I could tie it to the golden coffin, but there was no way to bring the coffin back up to the top of the slide. Would I need to restart again?

Fortunately, the timber worked fine, and I could climb down, to the sooty room, where I found a red crystal sphere. Just for thoroughness, I looked into it, and saw a vision of the living room where I left the other two spheres.

I repeated the adventure of the volcano, got the treasures and the books, and returned to the living room, dropping off my treasures, including the now useless torch.

Nothing happened. My score was 589/616, and this was my list of treasures:
  • Priceless zorkmid
  • Crown
  • Ruby
  • Painting
  • Bag of coins
  • Chalice
  • Trunk of jewels
  • Gold coffin
  • Crystal trident
  • Platinum bar
  • Sapphire bracelet
  • Jade figurine
  • Pearl necklace
  • Grail
  • Statue
  • Pot of gold
  • White crystal sphere
  • Stack of zorkmid bills
  • Portrait of J. Pierpont Flathead
  • Gold card
  • Blue crystal sphere
  • Red crystal sphere
  • Fancy violin
  • Huge diamond
  • Large emerald
  • Jewel-encrusted egg
  • Clockwork canary

That’s 27 treasures. Another three would make it an even 30, and at a conservative rate of nine points per treasure would bring my score up to 616 points. But once again, I was at the end of my rope. The only room with an apparent unsolved puzzle was the pool room in the mouse hole at the top of the well, which I could enter by eating the eatme cake, and I had no idea what to do there. I had tried, previously, bringing in a tube of gunk to plug the leaking ceiling, but I couldn’t reach it, and eating the blue cake to grow would crush me to death.

And so, I went sourcediving again. The Pool Room was internally designated “ALISM,” and on searching for that string, I found this block of code within a big function:
          (<AND <VERB? "THROW">
            <==? <PRSO> .RICE>
            <==? <PRSI> <SFIND-OBJ "POOL">>>
           <REMOVE-OBJECT <PRSI>>
           <TELL
"The pool of water evaporates, revealing a tin of rare spices.">
           <TRO <SFIND-OBJ "SAFFR"> ,OVISON>)>>


That’s mostly gibberish to me, but the first few lines seem to suggest “throw rice into the pool, to trigger the following condition (the pool evaporates and leaves a tin of spices).” That sort of makes sense, in Zork logic, but where could I find rice?

Then I noticed the name of the function definition:

<DEFINE CAKE-FUNCTION ("AUX" (RICE <SFIND-OBJ "RDICE">) (OICE <SFIND-OBJ "ORICE">)
                 (BICE <SFIND-OBJ "BLICE">)


Cake-function? Then, it hit me. RICE isn’t rice, it’s red icing! BICE is blue icing, and OICE is orange icing. Throwing magic cake into a puddle of bilge water makes a lot less sense than rice, even by Zork standards!

So I went back to the tea room, armed with a bottle of water and a variety of cakes. I ate the eatme cake to shrink, entered the mouse hole, and threw the red cake into the pool, and got the spices (saffron, according to the source code). I took the poison flask too while I was there. Then I left, ate the blue cake to get big again, and went back to the living room.

Spices deposited, my score was now 599/616, I had 28 treasures, and no clue what to do next. So I went back to the source code.

It wasn’t hard to find the list of treasures in the game, so I parsed the list until I found one I didn’t already have; a “Flathead Stamp.” The object was designated “STAMP,” and searching for the string “STAMP” took me to a block of code describing the purple book I found in the volcano’s library. I opened the purple book, and sure enough, a flathead stamp was inside.

I must protest this puzzle too. I had tried to read the book before, and AFGNCAAP told me it was written in an unfamiliar tongue. Didn’t AFGNCAAP have to open the book in an attempt to read it?

Anyway, 613/616 points, 29 treasures, and stuck once again. Back to the list of treasures!

Continuing through the list, I found a “Don Woods stamp,” with this embedded description:
---v----v----v----v----v---
|         _______         |
>  One   /       \     G  <
| Lousy /         \    U  |
> Point |   ___   |    E  <
|       |  (___)  |       |
>       <--)___(-->    P  <
|       / /     \ \    o  |
>      / /       \ \   s  <
|     |-|---------|-|  t  |
>     | |  \ _ /  | |  a  <
|     | | --(_)-- | |  g  |
>     | |  /| |\  | |  e  <
|     |-|---|_|---|-|     |
>      \ \__/_\__/ /      <
|       _/_______\_       |
>      |  f.m.l.c. |      <
|      -------------      |
>                         <
|   Donald Woods, Editor  |
>     Spelunker Today     <
|                         |
---^----^----^----^----^---


Well, it’s certainly self-aware. I’m sure that “one lousy point” is in reference to that strange puzzle in Adventure where you must leave a magazine in Witt’s End to score a single point before the final area opens up.

Working my way backwards through the source code references, I found that the Don Woods stamp would be found inside a brochure, which was related to an event that could be triggered by typing “send for brochure.” Horrible, horrible puzzle, maybe even worse than the Witt’s End puzzle, and I’m sure that was the point. I tried restarting the game to see if this command did anything right off the bat, and it does! What’s AFGNCAAP even doing when I type that? You don’t need any inventory items, or need to be near the mailbox. Even the action doesn’t make sense!

I even searched the source code for references to “brochure” to see if I could find any clues hinting that this was an action you could take. All I found was that reading the matchbook produces this:

                [close cover before striking BKD]

        YOU too can make BIG MONEY in the exciting field of
                      PAPER SHUFFLING!

Mr. TAA of Muddle, Mass. says: "Before I took this course I used
to be a lowly bit twiddler.  Now with what I learned at MIT Tech
I feel really important and can obfuscate and confuse with the best."

Mr. MARC had this to say: "Ten short days ago all I could look
forward to was a dead-end job as a doctor.  Now I have a promising
future and make really big Zorkmids."

MIT Tech can't promise these fantastic results to everyone.  But when
you earn your MDL degree from MIT Tech your future will be brighter.

              Send for our free brochure today.


Yeah, that doesn’t cut it for signposting.

After sending for the brochure, I waited a bit, walked outside, and soon enough heard a knocking sound from the front of the house. A free brochure had been put in the mailbox.

The mailing label on this glossy brochure from MIT Tech reads:     
                                                                   
                                                                   
                c/o Local Dungeon Master                           
                White House, GUE                                   
                                                                   
From the Introduction:                                             
                                                                   
The brochure describes, for the edification of the prospective     
student, the stringent but wide-ranging curriculum of MIT Tech.    
Required courses are offered in Ambition, Distraction, Uglification
and Derision.  The Humanities are not slighted in this institution,
as the student may register for Reeling and Writhing, Mystery      
(Ancient and Modern), Seaography, and Drawling (which includes     
Stretching and Fainting in Coils).  Advanced students are expected to
learn Laughing and Grief.                                          
                                                                   
                                William Barton Flathead, Fovnder   
                                                                   
(The brochure continues in this vein for a few hundred more pages.)
Affixed loosely to the brochure is a small stamp.                  


True to its word, the stamp was only worth one lousy point, bringing my score to 614/616 on its deposit and my treasure count to 30.

The list of treasures revealed another, a brass bauble, and searching for references to it revealed this scene:

The canary chirps, slightly off-key, an aria from a forgotten opera.
From out of the greenery flies a lovely songbird.  It perches on a
limb just over your head and opens its beak to sing.  As it does so
a beautiful brass bauble drops from its mouth, bounces off the top of
your head, and lands glimmering in the grass.  As the canary winds
down, the songbird flies away.


So I retrieved the mechanical canary, went back to the treetop, wound up the canary, and sure enough, a mate came and dropped a brass bauble, which I collected. Retrieving and depositing it and the mechanical canary, my score became 616/616.

Was I done? Not quite. A few turns later,

Suddenly a sinister wraithlike figure, cloaked and hooded, appears
seeming to float in the air before you.  In a low, almost inaudible
voice he says, "I welcome you to the ranks of the chosen of Zork. You
have persisted through many trials and tests, and have overcome them
all, dispelling the darkness of ignorance and danger.  One such as
yourself is fit to join even the Implementers!"  He then raises his
oaken staff, and chuckling, drifts away like a wisp of smoke, his
laughter fading in the distance.


And my score became 0/100. The wraith’s invitation was clear; I was to return to the Tomb of the Unknown Implementer, where further challenges awaited. I did so, carrying nothing but a lamp and a free brochure (I had a save backup), and the crypt opened easily.

The mysteries of GUE are solved (some spoiled by the MDL source), but the endgame looms ahead, and my understanding is that the complete set of puzzles in it don’t exist in any version of Zork except for this MDL release. And so this seemed like a good place to stop for now.

My (hopefully) complete map of the GUE:

6 comments:

  1. There are a lot of puzzles and treasures that are in this that aren't in the DOS version I played a couple years back. The whole volcano, sending for the brochure, and the spheres at least. I'm not sure why else didn't make it in. Thanks for reviewing this version; I look forward to the end game.

    ReplyDelete
  2. I think some of these puzzles may have ended up in Zork II and III? There just wasn't room in the personal computers of the day... many were 8 bit and limited to 64k during that era!

    ReplyDelete
    Replies
    1. Initial releases of Zork I targeted 32KB, and even that was more than what some people had! The game could be a lot bigger than that since it required a floppy drive, but 32KB was the upper limit for the combined space of the Z-machine interpreter and the mutable portion of game data.

      I estimate Zork I's earliest releases to use about 88KB of space, and I'm not sure what the upper limit for floppies at the time was. In comparison, the MDL code for Zork totals 612KB, and the compiled Confusion byte code is 1,483KB!

      Perhaps Infocom's most impressive feat of squeezing Zork into small memory footprints was Mini-Zork, which crammed every puzzle and treasure of Zork I into a 64KB cassette tape. The entire game got loaded into a Commodore 64's tiny 64KB of RAM - it had to since that's how cassette tapes worked, and still leave room for the interpreter and runtime variables! Some rooms got cut, and descriptions are terse, but the complete game is there.

      Delete
    2. Yeah, the volcano is in Zork III. Ahab pointed it out some posts ago, but Zork I isn't "the" home computer port of Zork, the original Zork was ported as Zork I, Zork II and Zork III because... well, Zork was HUGE. So if you don't remember a lot of these puzzles from Zork I, that's because a lot of them were put in Zork II and Zork III instead.

      Delete
    3. The volcano it's in Zork 2, not 3.

      (And it has a much better solution to the glacier problem.)

      Delete
  3. In my experience, the thief will always take your rope and drop it in the torch room if you leave it their. It's a really spiteful bit of game design, and one of many reasons I would rate him as the best video game villain of the 1970s.

    ReplyDelete