Specification of Level 9 A-Code

Yep, John is a very cool, friendly and knowledgeable guy who has done a lot of work academically, interviewing people involved with text adventures, and he has also produced retro 8-bit games himself. Definitely worth checking to see if it’s okay to share… I’m pretty sure he would find a way to help you disseminate the relevant sections of the book.

(For those unfamiliar with some of John’s interviews & academic work… Search )

4 Likes

I have sent an e-mail to John (I don’t do twitter) and asked if the download link I gave is legal. In the meantime, I have removed the link from my post.

4 Likes

We could try (one last time) reaching out to the Austins? One last, desperate, attempt. :slightly_smiling_face:

3 Likes

I got a reply from John. He doubts that the download link I mentioned is sanctioned by his publisher but he’s aware of the book being unofficially available in a wide variety of places on the Internet. He says he wrote the book to be read, so personally he doesn’t have any problem with the download link.

However, since I just joined this forum, I don’t want to start off with getting into trouble so I have deleted the link from my post :slight_smile:

11 Likes

I’m working along digging into the format and reached far enough to unpack messages and the dictionary for version 1 games. Now it’s time for version 2 and have a hard time locating emulator images of version 2 games.

My current workbench is to load the game into a C64 emulator and taking a snapshot. Then locating the game in the memory dump and extracting the data.

According to this there’s the following version 2:

Adventure Quest
Dungeon Adventure
Lords of Time
Snowball
Return to Eden
Erik the Viking
Emerald Isle
Red Moon

Burt I can’t find the first 4, in version 2, for the C64 platform. Didn’t these get released for C64 and should I look for images for other platforms?

Are the “version 2” releases of those the ones from the Jewels of Darkness compilation? EDIT: Reading down that document, no they’re not.

Just doing a quick search, myself…

EDIT2: Adventure Quest et al, were definitely released as standalone versions for the C64 (before the Jewels of Darkness compilation) but the archived version on GB64 does seem to be the JoD release.

You could just grab the Spectrum versions… e.g.

I’m gonna try the Spectrum one (I think I got a working emulator, but if not; which is the recommended?)

Any of the Spectrum emulators should be fine. Fuse tends to be popular with many, as it’s free and multi-platform.

Differences between versions I found this far:

Version 1

  • Parser just ignores words thats not recognized. “get dfgfgdfg lamp” will result in that you pick up the lamp.
  • Parser also only match word as far as you type them. If you for example type “x lamp” treying to examine it, the parser matches this with “xyzzy” instead. A bit confusing.

Version 2

  • Same parser as version 1
  • Have pictures

Version 3

  • Improved parser that faults on unrecognized words and understands more complex sentences.
1 Like

The place to look for information on what versions are known to be released for what platforms is in the L9Cut source code, particularly the table in L9DATA_D.H.

From that there were no known releases of Adventure Quest, Dungeon Adventure, Lords of Time or Snowball in the V2 format for the C64: the only V2 versions of these were for the Spectrum, Amstrad CPC and the MSX (Japanese 8-bit home computer). I have boxed copies of these four for the C64 but they’re all V1.

2 Likes

That’s a goldmine I missed!

Side-note: I am currently in touch with Mike Austin and we agreed to collaborate and preserve the Level 9 archive, including the A-Code development tools. Mike started the epic job of collating and reading the thousands of disks some time ago. We also look into the disks that will need some extra love but it’s fortuntately only a few disks so far. Stay tuned while we work this out. Everything will likely land on Github. Please be patient as this will take some time. Oh, and for the sake of being not too much off-topic: there seems to be an A-Code reference existing. Once I have it, I will share it.

11 Likes

That’s great! Any discussion on what license to use?

Amazing!!!

1 Like

Could you please start a new topic about this? I’m sure there will be more than a few questions about it (and not just from me).

1 Like

The idea behind releasing the tools is not only preservation but also that new games are being produced with them as well, so that would imply a liberal license. But we haven’t really touched that topic yet. This will be addressed the more the whole preservation project matures.

4 Likes

Yes, but not now. We are in a very early stage and only recently agreed to preserve the Level 9 archives. At this point I see no benefit in opening a discussion. Hence, I just posted it as a side-note here. Once there is something more to say, I’ll update the community. And I will share the reference document as soon as I have it.

4 Likes

@8bit_era: That’s fantastic news, Stefan!!!

As another side note: I’m currently porting the reverse-engineered Level 9 interpreter at https://github.com/DavidKinder/Level9 (developed by Glen Summers, David Kinder, Alan Staniforth, Simon Baldwin, Dieter Baron and Andreas Scherrer) to the ZX Spectrum Next. The first step is to change the interpreter to use a banked memory model.

6 Likes

Alongside documenting the format in the Google Doc that @fredrik is hosting I’m writing a little test project in C# that may or may not develop to a full fledged interpreter. Currently it’s able to unpack the dictionary and messages for version 1 and version 2 games. The goal is to comment and make the code easier to read and not concentrate so much on memory effiency (as the Level9-terp). Mostly it is for my own education. The code is here.

One thing I noticed so far is the text compression. The text is compressed to about 56-58% of the original size (one byte per character). The biggest contribution to the compression is done by using 5-bits (pentad) for each character, 37.5 percentage points. The abbreviations, even though they are recursive, only contribute an additional 4-5 percentage points.

Edit: I don’t know if the google doc is open for viewing if you are not invited (I’m sure @fredrik happily invites people that want to contribute), but the document is here. My C# effort isn’t a solo project either. I’m happily accepts pull requests.

1 Like

One thing I noticed so far is the text compression. The text is compressed to about 56-58% of the original size

Mike Austin had this to say about Infocom in 1985: “At the low programming level their games really aren’t that clever. Their compression routines are virtually non-existent and I’m not at all impressed by the speed.”

Is that for your text compression routines or the original Level 9 code?