I wrote a Z-machine interpreter called Aimfiz using SDL. It should be portable to other systems with SDL; try it and notify me of any problems. See http://ifwiki.org/index.php/Aimfiz for some information. The current version is 0.8. (For the other interpreter with similar codes, without SDL, see Fweep.)
Please tell me if any bug you found in this software.
Version 0.3 is now released, which adds:
- Shiftlocks for version 3, 4, 5
- Margins (this is a version 5 feature, despite Graham Nelson’s document saying otherwise; no version 5 game ever used it, though)
- Support of font 2 (I have figured out how it is supposed to work)
- FONT now returns the previously selected font, or 0 if the font you are trying to switch to is unavailable
- Repeat count command (after typing a command, push CTRL+Y it ask you how many time to repeat it)
- A bug dealing with the abbreviation table has been corrected
- Push CTRL+S in a “more” prompt to make it stop asking for “more” until after the next input
I think there were some bugs in the pictures implementation; hopefully it is corrected now. (It is still incomplete and only support 8x8 character sets, and not arbitrary pictures.)
OK, version 0.6 is now released and fixed.
Current version is now 0.8.
Does this comply (for the most part) with the 1.1 standard?
As far as I’m aware, no. I believe zzo38 is more interested in making his interpreters precisely match what Infocom’s idea of the Z-Machine was, than to comply with any of the modern Standard definitions.
This complies with standard version zero (as far as I am aware; it may contain errors, and a few optional features aren’t implemented, but these are optional and don’t make it non-compliant).
Out of curiosity, since you’re trying so hard to stick to the Infocom standard, how do your interpreters do in terms of playing .z6 game, or sound in games like Lurking Horror or Sherlock?
It’s not an idle question, it’s very constructive. If you were able to create an interpreter so specialised that you could play EVERY SINGLE Infocom game with all their features, you would have something very useful. And if you could port that beauty to various platforms (like, say, Android or iOS), you would be doing iFrotz, Hunky Punk et al a huge favour - they wouldn’t have to worry about supporting those files, because your interpreter already would.
Although, and you probably won’t like this suggestion, if you do include full .z6 support, you might as well also look into supporting other .z6 games - like Moments Out of Time, or IIRC The Colour of Magic. These might be more 1.1 than 0, which is why you probably won’t be interested.
Still… think about it. There’s a gap, and you could fill it, always remaining true to the Infocom standard.
My interpreters do not support YZIP story files at all. I may fork this interpreter to write one that supports only YZIP, or add support to this one directly, but do not currently have intention to do so.
Sound (other than built-in sounds 1 and 2) is not currently supported although it is a feature I certainly do intend to add support for in future. Their MIDI files seem to use command 0xFF has some sort of delay, although I am unsure of the units in use (or even that it is a delay); in actual MIDI, this command is a system reset but that obviously has no use here. There is no documentation (other than the unofficial one documenting the sound formats, which doesn’t describe the MIDI format except for where the note number is, and that happens to be wrong and doesn’t work anyways), and none of Infocom’s interpreters implement MIDI correctly although the ones that do each do it differently, none of which is what is intended.