What's the highest practical Z machine version for 8-bit machines?

The obvious answer, of course, is v3. 128k story size.

v4 doubles the maximum story size, and objects are about double the size. It adds support for more call opcodes (smaller instructions for 1/2 args) and properties larger than 8 bytes.

v5 adds 7-parameter calls and a few interesting things like unsigned shifts.

Looking at a few different PunyInform games, it seems like the v3 version was maybe 2-3k smaller than the v5 version, which initially surprised me. But I’m guessing the larger object size is partially offset by the richer instruction set, particularly the 1 and 2-parameter call instructions which are always going to be a byte shorter?

Theoretically something like an Apple ][e or a Spectrum 128 or Commodore 128 could handle a dynamic memory close to 64k, which means v5 (but probably not v8) is practical. A “modern retro” machine with SDcard support probably could manage a v8 game, although that’s kinda cheating.

(My personal target of choice is a portable 32-bit machine with around 256k-512k of RAM and “infinite” read-only storage, so it could clearly handle v8)

I guess there’s no reason really to target v4 as a story type. Was Trinity released on any 8-bit machines?

Thanks,

-Dave

2 Likes

Trinity was released for C128.

It is more the size of the game, rather than z-version, that determines how it works on a platform. On the other hand is there no reason for z7 or z8 over z5 if you’re not in need of more space. z5 is perfectly viable for 8-bit platforms, if there is a interpreter available for the platform.

4 Likes

A z8 game could be perfectly playable on a C64, if its dynamic memory usage isn’t too high. To be at all playable on Ozmoo for C64, dynmem can’t be more than ~35 KB, due to technical details of the platform. Ozmoo on C128 allows for ~42 KB of dynmem IIRC, while Ozmoo for Plus/4 allows for something like 47 KB. However, on C64 and Plus/4, having a large dynmem leaves too little RAM for swapping (static memory), so unless you’re using a truly tiny library (much smaller than PunyInform), you probably don’t want to exceed 25-30 KB of dynmem.

A z8 game which is big because it has a lot of text, e.g. something like a modern remake of the Suspended concept, where many different actors have texts to describe all objects etc, should be fine.

4 Likes