angstsmurf / spatterlight

Updated fork of Spatterlight
GNU General Public License v3.0
98 stars 6 forks source link

Support Z-Code Version 6 (Z6) #74

Open dfabulich opened 2 months ago

dfabulich commented 2 months ago

Spatterlight doesn't support the four Z-Code Version 6 games (Arthur, Journey, Shogun, and Zork Zero).

That's a bummer, because that means that the only way to play them on macOS is with Frotz, and that means installing Frotz via Homebrew.

Not to mention that you have to get your .z6 file and the graphics .blb in the right place, and aligned just so.

https://www.ifwiki.org/Arthur:_The_Quest_for_Excalibur

Can anything be done here?

dfabulich commented 2 months ago

See also: https://intfiction.org/t/could-bocfel-emglken-support-z-machine-version-6-z6/68566

angstsmurf commented 2 months ago

The version 6 games are fundamentally incompatible with the Glk screen model, so it really makes no sense to add support for them to a Glk-based multiformat interpreter such as Spatterlight. The only way to do it using Glk would be to draw all text in a single graphics window, pixel by pixel, using glk_window_fill_rect() calls. Alternatively, you could do it like Zoom, ditching Glk entirely and replacing it with the z6 model.

In both cases you lose most of the benefits of having a unified interpreter in the first place. It would probably make more sense to write a new standalone interpreter from scratch.

Speaking of things which make no sense, in this branch I've tried to do it with a combination of bolting lots of non-spec functionality onto Glk and hacking the games themselves, basically re-implementing the original ZIL source in C. Nothing really works yet, though.