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.
- About Infocom and interactive fiction in general, see the “New to IF” section at the Interactive Fiction Archive.
- To download Z-Machine games, see the IF-Archive's “Z-Code” section.
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 [email protected].
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/:
- British english hyphenation patterns as provided by the hyph-utf8 project at http://www.ctan.org/tex-archive/language/hyph-utf8/ under a permissive license.
- German hyphenation patterns, provided by the hyph-utf8 project at http://www.ctan.org/tex-archive/language/hyph-utf8/, distributed under the terms of the LaTeX Project Public License.
- French hyphenation patterns as provided by the hyph-utf8 project at http://www.ctan.org/tex-archive/language/hyph-utf8/, distributed under the terms of the MIT License.
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