mjdarby / Fic

A Z-Machine interpreter written in Python.
GNU General Public License v3.0
2 stars 0 forks source link
interactive-fiction python zmachine zmachine-interpreter

Fic

Fic is a work-in-progress Z-Machine interpreter for Windows/Mac/Linux written in Python 3. It is for use on the terminal, and has been 'tested' in Windows Command Prompt, Windows Powershell, xfce4-terminal

Currently 'supports' all V3 Z-Code games, minus the sound in The Lurking Horror. V1/V2 is mostly supported, except for one edge case where you use two digits in a row for input. Support for V4 is partial, minus games that require timed input.

Work is ongoing for full V4/V5(/V7/V8) support. Will likely never touch V6.

Usage

Known Issues

Reporting bugs

Please open a Github issue with a screenshot/copy-paste of the bug you've encountered, and provide:

Contributing

If you want to contribute to Fic development, please feel free to raise a pull request! We'll work out the guidelines for this as we go along. Fic is licensed under GPLv3, so any contributions made will also fall under this license.

It's a pain to integration test this stuff, but I recently discovered the joys of CZECH by Amir Karger - so the first little rule we could have is that you run the CZECH suite against v3 + v4 and make sure the score/output you get isn't worse than what we started with. You can find the suite here. You'll need to install Inform, but otherwise the Readme is self-explanatory.

Project Goals

Modest - the idea is to implement to some standard every opcode of V1-V5+V7-V8. Full support is not the target as Fic is currently a terminal application, so fancy font stuff isn't possible for instance. I will consider Fic viable when the enhancements given in the TODO section are done, and it is possible to complete the Infocom catalogue. In addition, it would be grand to also support a few of the modern classics/personal favourites:

Theoretically, correctly implementing the Z-Machine means supporting the above as well as everything else! But, sadly, I do not have time to test every game file the sun. If the above work to the degree that Frotz and other well-established interpreters support, I'll be happy. And for everything else - I've already outlined how to report bugs and contribute fixes!

Technical stuff

Dones

Opcodes implemented

TODOs

Enhancements

Refactor

Architecture / To Do

Opcodes remaining for v3 in general

Opcodes remaining for v4

Opcodes remaining for v5 - ordered by perceived difficulty

Opcodes remaining for v5 - Extension

Opcodes remaining for v6

Opcodes remaining for v6 - Extension