Zym Z-Machine interpreter for SymbOS

Started by prevtenet, 07:58, 21 February 22

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.


Hi all,

I am pleased to announce the release of Zym, a Z-machine interpreter for playing interactive fiction games (text adventures) on SymbOS. It supports Z-machine versions 3, 4, 5, and 8, so it can run most of the games published by Infocom, as well as thousands of other Z-code games created by the interactive fiction community.

Infocom games (like Zork and Hitchhiker's Guide to the Galaxy) play quite well; a lot of the later Inform games are too poorly optimized to run well on 8-bit, but I've included in the package some later games which run well on Zym (like Curses and a port of Colossal Caves Adventure). See the included README.TXT for instructions.

Downloads and screenshots are available on the SymbOS homepage: http://www.symbos.de/appinfo.htm?00054


your amstrad news source in spanish language : https://auamstrad.es


Congratulation Prevtenet!

That is a very impressive project, now you are able to play hundrets of text adventures in SymbOS! :)

It is also cool, that this is the first big SymbOS/SymShell app ever, which is written completely in C, using the C SDK for SymbOS by Nerlaska.

The speed is fine, loading even big 200K+ z3/z4/z5/z8 files is pretty fast. What I also like is that it runs with any text terminal window size, so if you run it in the GUI you can choose a smaller SymShell window.



That's an great idea!

Well, text adventures take quite some time. The used characters set seems to have 5x5 pixel or so. It's (at least for me) very hard to read that on a CPC's screen. But how to switch to real MODE 2 or a bigger character set?

http://futureos.de --> Get the revolutionary FutureOS (Update: 2022.03.09)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> Get the RSX-ROM for LambdaSpeak :-) (Updated: 2021.12.26)


Yes, prevtenet recommends to play it in fullscreen mode (on the CPC this is Mode 2 with 8x8 pixel characters):

I would love to see a GUI version as well (using different proportional fonts) :)



Thanks everyone! Fun project  ;)
I have played around a little with prototypes for a graphical version, I think the easiest way to do this is to basically provide a SymShell-compatible messaging system so the GUI can call zym.com as if it were SymShell and then render the results with a nice proportional font. There are some complicated subtleties relating to the behavior of the status line, boxed quotations, special characters, and so forth, but nothing impossible to solve. But no guarantees on when I might get around to implementing all this. ::)


Hey Prevtenet, I completely agree!

I wasn't so familiar with Z-Machine stuff before, but I already learned, that different fonts are possible.

You have this base system now up and running in a very impressive way, which even supports different terminal window sizes.

So I wonder if it would be possible to use a proportional multi font text output (maybe in the style of the SymbOS help browser?) later for running it in a GUI window? :)



Yeah, the idea is to do this basically the way the help browser does it (remapping the font to display bold and regular text on the same line). The Z-machine fonts (ignoring Version 6) are "regular", "bold", "italic", and "fixed-width", each of which can also be printed reverse-video. Not very many games use italic, so it can be ignored without much problem, but it would be nice to support bold for titles and headings. My thought process is to have two fonts in memory:

Font 1 - lower 128 characters: proportional regular
Font 1 - upper 128 characters: proportional bold
Font 2 - lower 128 characters: fixed-width regular
Font 2 - upper 128 characters: fixed-width bold

Fonts and ink colors can then be assigned to individual lines, which requires the whole line to be either proportional or fixed-width, but bold could appear anywhere. Most games are well-behaved about not trying to mix regular and reverse video (or proportional and fixed-width text) on the same line, so this gets you 99% of the way there. Using only 128 characters creates some complication for diacritics, but these can be gracefully degraded. The trickiest part is dealing with boxed quotations, which use the clever but annoying trick of temporarily expanding the upper (status) window to print a nicely-formatted quotation in the middle of the screen. This looks great in console mode, but creates all kinds of headaches for graphics programming. I think this will have to be accommodated by recognizing what the game is trying to do and redirecting output to a special set of controls just for that purpose; I believe this is what Glk interpreters on other platforms do (e.g. Gargoyle). (Only a handful of Infocom games actually use boxed quotations, but they're *extremely* common in Inform games, probably inspired by Graham Nelson's hugely influential 1993 game Curses.)

Hopefully I can get back to this soon  ;)



what additional effort is there for secret of monkey island etc?  (just curious)

is scummvm a super set of zmachine or just similar in principle?

also are there any existing INF games?  I cannot see why zmachine cannot be used to make INF games if it can be made to make IF games.

Sykobee (Briggsy)

Quote from: zhulien on 14:02, 28 February 22what additional effort is there for secret of monkey island etc?  (just curious)

is scummvm a super set of zmachine or just similar in principle?

ScummVM is different, and mostly used for graphical point-and-click adventures.
The oldest Scumm games might be possible, some did exist on the C64, but it would be a whole new code porting exercise.

Z-machine is more of a text adventure engine. This software looks pretty great, and it's good there is a full-screen option (hopefully with different palettes)!


SCUMM is something completely different. It is used for graphical point-and-click adventures.
AFAIK the only thing that both Scumm and Z-Machine have in common is, that they are both virtual machines for adventure games.

z3/z4/z5/z8 files can be Inform games as well as these from the Interactive Fiction scene. I think z3 is 128K max, z5 is 256K max and z8 is up to 512K.

*EDIT* Sykobee was faster :)


Powered by SMFPacks Menu Editor Mod