The Obsessively Complete Infocom Catalog

(This isn’t a new game, but it’s a project, so sure: Project Announcements it is.)

I’ve just spent a couple of weeks gathering up every version of the source code and the game files that I could find. Jason’s GitHub collections are excellent, but they are an edited extract from one source: the so-called “Infocom Drive”. They omit some published variations, beta-tests, and so on.

For years, the IF Archive has had another collection of Infocom game files (though not source code): the patches collection (https://ifarchive.org/indexes/if-archive/infocom/patches/). But these were in an annoying encoded format, in order to dodge the legal problems with archiving commercial games.

I figure that those legal problems are well out the barn door now. It’s time to have every Infocom game file variation in one place, indexed and easy to download. So here they are:

https://eblong.com/infocom/

I’ve tagged everything with the release number and serial number, where known. Plus tags for whatever other info we’ve got: “alpha”, “beta”, “mac”, etc.

Research and enjoy!

In particular, you’ll want to scroll down to the bottom and look at the last two categories on the page.

“ZipTest” was Infocom’s regression test suite for testing Z-code interpreters. I found two ziptest game files, for z3 and z6. (No source code, sadly.) This may be interesting to the ZIL / interpreter supporter folks.

“Generic” looks like a template for constructing a new game. I found a source directory which defines the parser, a couple of rooms, and a couple of stub objects. Also three game files.

28 Likes

Nice! I’ve never seen legit files for Nord nor Bert or for Bureaucracy, or for most of their last games. Thanks for putting this together!

2 Likes

The github repos has Nord+Bert and Bureaucracy game files, actually. (In the COMPILED folder.)

1 Like

Zarf,
here is a link to a compiled version of Checkpoint:


It’s from a video walkthrough on YouTube:

Thanks for posting these

That links to a zilf compile from the original source, right? (The compile date is 190424.)

I think it’s a good idea to get them all compiled, but I don’t want to mix up modern game files with the Infocom versions. The compiler is not identical.

I have some updates to do for my site, but I’ve been distracted by NarraScope. I’ll get back to it this weekend.

1 Like

First update: someone pointed me at the “new parser” that Stu Galley built for Zork Zero, Shogun, and Arthur. It’s now posted as “zillib.zip”.

Purports to be a newly-generated-by-restored-ZILCH Zork II r42. (but using r22 source code, so maybe the “42” is just a gag?)

https://github.com/ZoBoRf/ZILCH-How-to/blob/master/out/zork2.z3

There are several projects to recompile the Infocom source code and even fix bugs. However, I’m not including those on my page.

Is there a single link to download all material in the “The Obsessively Complete Infocom Catalog” or is the only way to download everything seperately?

(This is for us that are so obsessive that a link to “The Obsessively Complete Infocom Catalog” is not enough, we need an own local copy!)

No, there’s no single link. Sorry.

1 Like

I’d like to make a suggestion: (It’s always easy to suggest someone else do more work!) :wink:

Some type of changelog / history would be nice, or perhaps a list of story files alongside checksums made without padding.

Some time ago I synchronized my collection of story files against the site, finding at least one that was missing from the site and a few missing from my collection. I used a tool I wrote to allow for differences in padding when doing the comparison, but it was tedious nevertheless. I’m certain there have been additions/changes since then, but I haven’t mustered the time or energy to repeat the process. :frowning:

I appreciate the value in this, but I just stuff new files in when they turn up. In theory, I never expect more files to turn up, so there will never be changes. (Although in fact Allen Garvin sent me a bunch last week that I haven’t added!)

At any rate, I want to keep this as a low-workload page, so I’m not going to start tracking changes. How about I go back to the previous suggestion and add a “download everything” link?

3 Likes

I’ve added “download everything” links. Also a JSON file listing all the files:

https://eblong.com/infocom/catalog.json

This isn’t a changelog, but it may help you keep track.

3 Likes

Looking through the checksums, I noticed that seastalker-atari-r15-s840522.z3 and seastalker-mac-r15-s840522.z3 are identical. Is this deliberate, or a case of mistaken identity?

They existed as separate files, “atari.zip” and “seastalker.r15mac”. (I didn’t notice that they were identical.) Whether it was a mistake at the time, or if they really intended them to be identical, I have no idea.

I remember noticing that back when I went through the files.

@zarf You might consider to change the historical files zorkmdl-r791211.zip & zorkmdl-r810722.zip to the ones in the GitHub-repo PDP-10/its (The 791211 already points to the right repo).The 810722 only have four changed files and is here.

The only difference is that in the repos I link the files have the version number intact instead of th more generic extension “.mud”. As far as I can see the files are otherwise identical (I diff:ed them).

Just a suggestion!

New source files from June/July of 1977, https://github.com/MITDDC/zork-1977-07.

1 Like

Thanks!

ID-GEN builds the ZORK-VERSION global’s value from information of slot 8 of the channel (handle) of the open game file.

<DEFINE ID-GEN (C "AUX" (X <MEMQ !\. <8 .C>>) Y)
        #DECL ((C) CHANNEL (X Y) <STRING CHARACTER [REST CHARACTER]>)
        <SET Y <MEMQ !\; .X>>
        <SETG ZORK-VERSION
              <PARSE <SUBSTRUC .X 1 <- <LENGTH .X> <LENGTH .Y>>>>>>

This doesn’t work with ITS…

<SET C <OPEN "READ" "ZORK2" "ZIL">>$
#CHANNEL [4 "READ" "ZORK2" "ZIL" "DSK" "Z2" "ZORK2" "ZIL" "DSK" "Z2" 163 
23748404082 <ERROR END-OF-FILE!-ERRORS> 0 0 0 0 10 ""]
<ID-GEN .C>$

*ERROR*
TYPE-MISMATCH
X
<STRING CHARACTER [REST CHARACTER]>
#FALSE ()
EVAL
LISTENING-AT-LEVEL 2 PROCESS 1
<8 .C>$
"ZIL"

… so I changed the ZILCH code to ignore ID-GEN.

...
               <INFO "
ZIL Debugging Compiler 4.5
--------------------------">)>
        <COND (<AND <SET C <OPEN "READ" .STR "ZIL">>
                    <SET ZCHN <OPEN "PRINT" .STR "ZAP">>>
               <PUT .ZCHN 13 <CHTYPE <MIN> FIX>>
               <INFO "
Input file: ">
               <INFO .STR>
               <INFO ".ZIL">
               <CRLF>
               <COND (<0? ,LEVEL>
<SETG ZORK-VERSION 42>
                      ;<ID-GEN .C>
                      <PRINC "

The number I chose has no special meaning except for serving as a metasyntactic value. :wink:

When run on TOPS-20 ID-GEN would extract the RELASE (i.e. ZORK-VERSION global) from the file name extension. Let’s assume the file name would be ZORK2.ZIL.42, then we would get in the interpreter:

@mdl105
MUDDLE 105 IN OPERATION.
LISTENING-AT-LEVEL 1 PROCESS 1
<SET STR "ZORK2.ZIL.42">$
"ZORK2.ZIL.42"
<SET C <OPEN "READ" .STR>>$
#CHANNEL [3 "READ" "ZORK2" "ZIL.42" "DSK" "ROB" "ZORK2" "ZIL.42;P777700;A" 
"TOPS20" "ROB" 0 23748403706 <ERROR END-OF-FILE!-ERRORS> 0 0 0 0 10 ""]
<8 .C>$
"ZIL.42;P777700;A"
<DEFINE ID-GEN (C "AUX" (X <MEMQ !\. <8 .C>>) Y)
        #DECL ((C) CHANNEL (X Y) <STRING CHARACTER [REST CHARACTER]>)
        <SET Y <MEMQ !\; .X>>
        <SETG ZORK-VERSION
              <PARSE <SUBSTRUC .X 1 <- <LENGTH .X> <LENGTH .Y>>>>>>$
ID-GEN
<ID-GEN .C>$
42
,ZORK-VERSION$
42

The channel’s slot 8 is the “real second file name” (here "ZIL.42;P777700;A"). ID-GEN extracts the release as the string between the dot and the following semicolon.

2 Likes