Z-Machine interpreter in plain C
M4 Makefile
Clone or download
Permalink
Failed to load latest commit information.
doc
fizmo-console @ 3c65dce
fizmo-glktermw @ b0d1040
fizmo-ncursesw @ 303e079 Updated submodules. Sep 4, 2017
fizmo-remglk @ bb8dec2
fizmo-sdl2 @ 0750e96
libdrilbo @ 56e7770
libfizmo @ b1e680b
libglkif @ d461148
libmonospaceif @ 8d7ffa8 Updated submodules. Sep 4, 2017
libpixelif @ fb87445
libsndifsdl2 @ 53b19bf
.gitmodules
CHANGELOG.md
INSTALL.md
LICENSE.md
Makefile.am
README.md
configure.ac
user-config-example.txt

README.md

About fizmo

fizmo represents a generic a Z-Machine interpreter — “fizmo interprets z-machine opcodes” — supporting all Z-Machine kinds except version 6, allowing you to run Infocom-made and most other Z-Machine based interactive fiction, also called text adventures. It also provides a generalized, plain-C interpreter library, as well as interfaces / implementations for various display and sound output methods, providing an interpreter-engine for you own project, even for closed-source implementations due to it's BSD-style license.


Frontends

Currently there are five frontends available:

  • fizmo-sdl2
    Using the freetype2 engine, this SDL2-based frontend allows for proportional font display and supports antialiasing, subpixel-rendering and HiDPI support. It uses the “Fira Sans” and “Fira Mono” font faces which were made by Erik Spiekermann and Ralph du Carrois.
  • fizmo-ncursesw
    This frontend uses ncurses “wide” variant for story output. Ncurses is commonly used for output on fixed-width text displays. The wide extensions will ensure correct unicode display.
  • fizmo-console
    This frontend will simple read and write from the console / terminal. No fance functionality whatsoever, but may be useful for automization or voice output.
  • fizmo-glktermw
    An example Glk frontend. Requires glktermw — notice the trailing “w” — which may be downloaded from the GLK-Implementations at the Interactive Fiction archive.
  • fizmo-remglk
    A RemGlk-based fizmo frontend. Requires remglk, which may be downloaded from GitHub.

Interfaces

For developers, interfaces translate the Z-machine specific output — window management, output, scrolling and so on — into more display-specific commands, easing implementation considerably.

  • libpixelif
    This interface will convert output into draw-pixel commands, providing support for implementations on any pixel-based display. This interface is used by fizmo-sdl2.
  • libmonospaceif
    This interface will convert output into simple “goto-xy”- and “print”-commands, providing support for implementations on a fixed-width display. This interface is used by fizmo-ncursesw.
  • libglkif
    The GLK-interface translates Z-Machine output into GLK-specific instructions. This is used by Andrew Plotkin's iOS-fizmo.

Libraries

  • libfizmo
    This provides the interpreter core. It is a plain-C implementation which requires no external libraries (libxml2 is used by default, but in case babel support is not needed even libxml2 is not required).
  • libdrilbo
    Provides support for jpeg, png and infocom's mg1 image reading as well as X11-based output.
  • libsndifsdl2
    Supplies a SDL2-based sound interface.

Installation

Please see INSTALL.txt on how to bulid the packages.


Miscellaneous

Please send bug reports (or other requests) to fizmo@spellbreaker.org.

Fizmo was written by Christoph Ender in 2005 – 2016.

Please note:
Currently fizmo is in beta status, meaning it might do unexpected things such as stop with an error message, crash or cleesh your machine into a frog. There is no warranty of any kind whatsoever and you're entirely on your own when running it.


This package includes software written by other authors:

libfizmo includes the Mersenne Twister random number generator, available at http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MT2002/emt19937ar.html. This is available via a BSD license, which is stored in the source file “libfizmo/src/interpreter/mt19937ar.c”.

libfizmo includes hyphenation patterns provided by the hyph-utf8 project at http://www.ctan.org/tex-archive/language/hyph-utf8/:

libdrilbo includes code from the pix2gif utility by Mark Howell in ztools, which are available from http://www.ifarchive.org/indexes/if-archiveXinfocomXtoolsXztools.html. The copyright status of Mark Howell's work is unknown. Since he released the software for free and since it is also used by multiple other projects it can also be distributed or used freely, to the best of my knowledge.

libpixelif contains the “Fira Sans” and “Fira Mono” fonts made by Erik Spiekermann and Ralph du Carrois. For information about copyright and licensing see the file SIL Open Font License.txt in the following directories:

  • libpixelif/fonts/fira-mono
  • libpixelif/fonts/fira-sans