Playable version of Mini-Zork II

I’ve never bothered making restart fail in Frotz, but judging by the ZIL code it should just print “Failed.”:

<ROUTINE V-RESTART ()
	 <COND (<DO-YOU-WISH "restart">
		<TELL "Restarting." CR>
		<RESTART>
		<TELL "Failed." CR>)>>

By the way, I have added an “extras” directory to the repository. Currently it contains Henrik’s abbreviations files and a Trizbort.io map of the game. The map isn’t as pretty as it could be, but I figured it might be interesting if someone wants to compare it to the full map.

I’ve played and completed Mini-Zork II. I’m impressed, the game captures the essence of Zork II well. But I found some strange things that could perhaps be improved.

  1. Is the flask still available? If not, how do you read the letters on the cakes? Just trial-and-error, or by remembering how it worked in the original? Consider restoring the flask so the cake problem can be solved properly.
  2. One time I saw a grue in room 8. My lamp was lit, and I could examine it but couldn’t do anything else with it. When I left Room 8 and returned the grue was gone, and I haven’t been able to reproduce this. Seems to be a bug.
  3. When dead (eaten by a grue) and end up in Land of Red Mist there is a
    sign, but “x sign”, 'read sign" gives “I don’t know the word ‘sign’”. Missing object/comment?
  4. “read writing” in Crypt gives “I don’t know the word writing”. Missing object/comment?
1 Like

Thanks for testing! Of course, any credits for the game itself goes to Infocom, since I just tried to fix up what was already there. I still wonder who made it, and why it was never finished. The serial number on the original game file (871123) suggests that it was developed alongside Mini-Zork I (871124).

While I have made some minor additions (e.g. removing references to the whirring sound when the carousel has been stopped), I’m generally hesitant to add things that weren’t in the original. That said, I’ll try to answer your questions as best as I can.

No, there is no flask in this version. Unlike the full game, if you read the cakes you’ll see the letters “ENL”, “EVA” and “EXP”. I guess you’re expected to figure it out from that.

You were probably under the influence of the Wizard’s Fantasize spell. A rare random effect, triggered by an effect that is in itself pretty rare, that makes you occasionally see one of the following fake objects:

  • pile of jewels
  • gold ingot
  • basilisk
  • bulging chest
  • yellow sphere
  • grue
  • convention of wizards
  • copy of ZORK I

I’m not sure, but I think this feature was accidentally dropped from the last official release of Zork II. It’s in the final preserved version of the source code (which is probably what this version is based on) but it’s triggered even more rarely, and when it is it will cause Frotz to crash. I hope I’ve managed to restore the original behavior here, though there are aspects of it that I still don’t fully understand.

I guess that in some sense you are inside the red sphere, and the game gives you a glimpse of what you can see outside. If you’ve moved that sphere you’ll see something different, but it doesn’t bother to implement any interactions with what you see.

The behavior is the same in the full game, but I guess I could add the sign as a special case. It would probably just repeat the description you already see, though.

The full game doesn’t understand the word “writing” either. You can read the crypt, but it only has the synonyms “tomb”, “crypt” and “grave”, along with the adjective “marble”. Since an object can have up to four synonyms, I guess it would make sense to add “writing”.

Cool, it is probably true. Since I remember Zork II pretty well I didn’t pay close attention to everything that happened unless it was unexpected, and I didn’t think that things would appear that wasn’t present somehow in Zork II.

As for the other items I understand that you want to stay close to the Infocom version, so it is up to you. I only wanted to mention what I noticed.

I appreciate the bug reports - keep them coming! - and I’ve added “writing” as a synonym for the crypt. I still haven’t made up my mind about the sign. If it was my own game, and I did not have size constraints, then absolutely. But here I’m not so sure…

I’ve tagged a Release 15. Only two bugfixes and some other minor changes this time around. So that makes this the fourth “final” release…?

2 Likes

I like this project, as I am one of the few who has given a high rating to Mini-Zork on IFDB. When I came back to IF after 20 years away, I decided it was time to complete Zork I. But then I saw Mini-Zork and remembered that Zork I had seemed a bit overwhelming in the past. So I chose Mini-Zork and enjoyed it a lot.

However, I am thinking about the purpose of Mini-Zork II - it sounds like the purpose is to create a single-load file for the C64, also available on tape. I suppose the game will be faster (when it has been loaded) as all the data is in RAM rather than loading from a disk drive. So if anyone wants to play it on a real C64, Mini-Zork II will run faster than Zork II with a real disk drive(?).

That also makes me wonder if there could be C128 editions. At the moment, Ozmoo’s Build Mode P (single program file) is not supported for the C128, but I suppose that it could in the future and that the game could then use almost twice as much RAM? (sorry, I am not an expert on this).

So perhaps the full Zork I and Zork II could be single load files for the C128? That may also be possible for other games like planetfall etc? And when playing in 80-column mode, the 2MHz processor would make the game run even faster…

1 Like

I’ve compiled release 15 with optimal parse abbreviations. The files are at the usual place.

The z3-file is compiled with the “Optimal Parse”-patched Zapf and is 53,422 bytes. If you compile it with the same abbreviation-file in Zapf 0.9 the z3-file is 53,500 bytes.

Fredrik can explain the gory details but the 128’s memory map is not as fun to deal with as one would like, so it’s not as easy as it sounds to have a bigger single-load game.

The gray/black screen Infocom interpreters, and Ozmoo, support preloading any story file to an REU, which is the “easier” path to higher performance.

(And yes the games run much faster when either in system RAM or in a RAM Expansion Unit than they do when they have to hit a drive mid-game.)

2 Likes

Thanks for the info. I hope to avoid purchasing an REU but it is good to know :slight_smile:

What Jason said.

The C128 is still an 8-bit computer with a 16-bit address space, meaning that it can really only handle 64 KB of memory. It gets around this by having two RAM banks with 64 KB of RAM each. When you load a single file program, it can only fill one of those banks. Since the C128 also has a more advanced Basic and some other quirks in its memory map, a single-file build on C128 could use a lot less memory than on a C64. This, and the fact that we think very few people are using a C128 with just a tape drive, made us skip single-file builds for C128.

However, a game built for C128 will, by default, load as much as it can of the game into memory when it starts. A game the size of Zork II will fit in its entirety, as Ozmoo can use a bit more than 100 KB for game data. Also, Ozmoo will double the CPU speed in 80 column mode, and it will double it even in 40 column mode but only when the raster is in the top and bottom border (or the screen gets garbled). All in all this means the full Zork II runs at a very nice speed on a C128.

2 Likes

Ok, that is interesting. If I understand you correctly, this means that when the game has begun, there is no disk accessing anymore? So first the game is loaded, and then the game data. I guess that should be possible on tape also, although it technically will be a multiload game. I guess, in theory any disk game could be converted to tape if the player was willing to wind and rewind the tape again and again. But here, there is no need to rewind, if the game data is placed right after the program on the tape.

But as you say, not many has a real c128 without a disk drive nowadays, so I understand that tape versions have low priority.

Anyway, thanks for enlightening me - I understand now that most Infocom games are expected to run faster in c128-mode than on a c64, even in 40-column mode.
EDIT: Just made a quick test with VICE in 64 and 128 mode with Zork II. The game was MUCH faster on c128 (looked almost 3 times as fast but it may depend very much on the test).

Correct.

First it loads as much as can be squeezed into bank 0, as a single file. This file has also been compressed, which makes it faster to load. When you type RUN, the data is decompressed, then the interpreter starts, the interpreter moves data to convenient places in memory, and loads data from disk into all free parts of memory in both bank 0 and 1, until either there’s no free memory left or it has loaded the entire game. Then the game starts.

Yes, it would be possible to load Zork II in from tape as two files on a C128. We just haven’t added support for this to Ozmoo, and we currently have no plans to do so. Also note that Ozmoo doesn’t support save or restore to tape and doesn’t support restart in single-file builds, so it’s a bit of a crippled game really.

Yes, all Infocom games built with Ozmoo should be faster on a C128 with 40 column display than on a C64.

The Plus/4 is faster than the C64 as well, but the difference isn’t huge.

1 Like

I expect that if you turn on an emulated REU (256k or bigger) and re-run the test in VICE x64(sc) the speed advantage will narrow considerably.

It’s all about getting away from that disk access.

1 Like

We use a playthrough of Hollywood Hijinx as a benchmark game. Using REU on both computers, and 80 column display on the C128, playing through the game to the end takes 608 seconds on the C64 vs 355 on the C128. This is a 42% shorter time on the C128 vs the C64. This time is measured from the first prompt to the last, so initial loading and the first text isn’t included in the benchmark.

(Note that I edited my response to Denk above)

2 Likes

Since I haven’t heard anything for a while, I guess Release 15 is indeed the final version. Though I don’t think anyone has generated Ozmoo images for it yet?

Built new images for Commodore computers. Used a new colour scheme I thought was pretty.

https://drive.google.com/drive/folders/1XOcXwgEb9J88MLPxtC4TbCbKsZFR_TJf?usp=sharing

This uses the brand spanking new Ozmoo 6 and utilizes the new input text colour feature. The single file build can’t fit the command history feature, but the other builds use it.

3 Likes

Should I add these to the “extras” directory of my repository, or do you prefer to keep them separate?

Seems like a good time to add them.