I ported the Inform 6 version of 350p Adventure to PunyInform. No game content has been added or removed, and the player experience should be about 99% the same as when playing the Inform 6 version, except the PunyInform version should run at a decent speed on 8-bit computers.
You can get the z3 and z5 file, as well as the source code, at if-archive:
The game, and all of the resources above, have just been updated to Release 3, making use of PunyInform v6.0, and incorporating numerous new optimizations. The result is a story file of only 74 KB as z3, or 75.5 KB as z5, that plays really well on low-end 8-bit systems. Available for more platforms than you can shake a stick at.
There’s a new message, taken from the TADS ancestor of this version - if a dwarf is in a nearby room, you sometimes get a comment.
The game will now describe what’s on the Y2 rock in the room description. (I accidentally removed this when porting to PunyInform).
Many (~half?) of the builds for retro systems which can use the z5 version have been using the (slower) z3 version until now. Fixed.
The game is also available as a z4 file.
The z4 version might be useful for someone who wants to play it on a system where there is an old Infocom z4 interpreter, but no z5 interpreter. It could also be useful to interpreter developers to test z4 functionality. I haven’t seen any other post-Infocom z4 game files in the wild.
I’m curious why the Z5 version is significantly faster. Is it because of things like @scan_table being available? Or being able to use more than four parameters to a function?
Among other things, it is used to look for a word in a list of words, when matching either a regular object, a cheap scenery object, or a room when teleporting.
It is also used when checking if a dwarf is adjacent to the player’s location, which happens both when dwarves are about to move and when deciding if we should print a message that a dwarf is nearby.
Since z4 also has @scan_table, the z4 version is almost as fast as the z5 version.
Compared to the Inform 6 version of the game, running through a 167-move walkthrough on a C64 with REU is about:
Sigh, I wish we had a time machine so many of the 90’s classics like Anchorhead and Muldoon’s could be rebuilt with PunyInform and have wayyyy less overhead (things like excessive calls to UnsignedCompare that were already fixed in PunyInform etc).
I’ve just noticed this on the IFWiki page, in relation the 24 November 2024 release 1:
This release uses the same IFID as Adventure (NELS0350), i.e. E9FD3D87-DD2F-4005-B332-23557780B64E.
I’ve not looked into Treaty of Babel - IFWiki in detail but here’s an extract from a RAIF thread linked to from there (coincidentally written by Graham Nelson!)
Translations we regard as independent works with their own IFID. As you say, this is quite normal for ISBNs. Indeed, we have independent iFiction records for all four of Zork I, German Zork I, Zork I Solid Gold edition, and Mini-Zork I: these are substantively different editions. (With books, too, updated second editions often get new ISBNs.)
I think reworkings by other authors also qualify for fresh IFIDs. For instance, the Z-machine port of Dungeon - the original mainframe-circulation Zork, during a brief interlude when the word “Zork” was thought inappropriate - has a different IFID from any of the above.
Should the PunyInform port of Inform 6 Adventure have a fresh IFID? If it should, could it now be changed retrospectively?
I did look at the Treaty of Babel, and concluded that if my port played nearly identical to the Inform 6 version, it should have the same IFID. Both versions are written in Inform 6, both compile to Z-code, and the game behaves almost exactly the same from the player’s perspective. I asked Graham what he thought, and he agreed.
Release 2, 3 and 4 were essentially the same as release 1, but with better performance, and some bugfixes.
Release 5 deviated a lot though, with numerous changes, blocking moves/exploits that used to work, changing the single dwarf with five lives into five separate dwarves, changing the end-game timing etc. For this reason, I gave the game a new IFID at this point.
This is the text in the Treaty, §2.2:
“If a game is ported from one system to another (other than simply being moved from one version of a system to the next, e.g., by being moved from TADS 2 to TADS 3), the port receives a new IFID. Again, this is analogous to books: a different-format reissue of a book, such as a paperback of what was previously hardback, gets a new ISBN.”
Though I’ve had a quick skim of the treaty and my instinct is that the IFID system was to differentiate between different “projects”, with the delineation being based on whether the bibliographic details are sufficiently different. I concede that this would be a woolly definition, but think your 2024 Inform 6/PunyInform port would count as a different project to Graham Nelson’s 1994 Inform 6 port.
Then again, as you worked with Graham then maybe it is the same project and your port is akin to a book being “reprinted with corrections”, or at least a new edition with insubstantial changes:
As with published books, where an ISBN remains the same even if the book is reprinted with corrections, the IFID should be associated with a project, not a specific story file compiled from it. A re-release with bug fixes should have the same IFID.
Anyway, we can just explain things on the IFWiki page