IFP Home Page
Author: Simon Baldwin <simon_baldwin@yahoo.com>
Date: 9th May 2005
Overview
IFP is a plugin scheme for playing Interactive Fiction on Linux
systems. It combines a number of interpreters, written for
distinct Interactive Fiction game systems, into a single runnable
program.
As of the current release, 1.3, here's what IFP can do:
Summary
IFP plays several different types of Interactive Fiction game
files using a single game playing application program, and a set of
game interpreter plugins. The program automatically determines
how to play the game from the data in the game file, and the different
game files are all handled seamlessly. The current implementation
contains plugins to handle game files in the following formats:
Z-machine, TADS, HUGO, Alan, Glulx, AGT, AdvSys, Level 9,
Magnetic Scrolls, Adrift, and Blorb
For Blorb files, IFP recognizes ZCOD (Z-machine) and GLUL (Glulx)
executable types.
IFP can directly handle Compressed, Gzipped, or Bzipped game
files, and game files, compressed or otherwise, contained in Zip, Tar,
or Cpio archives. It can also handle URL references to game
files, compressed game files, or game archives.
That is, you can hand the programs in IFP any of the above game file
formats, including compressed data or internet URLs that reference game
files, and they will run any of the games handed to them
seamlessly. For example:
legion /home/my_account/my_files/toonesia.gam
legion /home/my_account/my_files/bear.z5.gz
legion http://www.ifarchive.org/if-archive/games/zcode/curses.z5
For more details about Interactive Fiction in general, please visit the Interactive Fiction Archive.
Obtaining IFP
IFP release 1.3 is available in RPM binary and source format, and in
plain old gzipped tar file format, through the following locations:
ifp-1.3-1.i386.rpm
ifp-1.3-1.src.rpm
ifp-1.3.tgz
The source file and .tgz distribution are around 4.5Mb, and the binary
RPM distribution is around 3Mb.
If you have Debian Linux, you may want to use the Debian IFP binary
package. This is available at:
ifp_1.3-2_i386.deb
If your Linux is neither RedHat nor Debian based, and you don't want to
be bothered building source, you can extract just the IFP binaries from
the Debian binary package with the following commands:
ar x ifp_1.3-1_i386.deb data.tar.gz
mv data.tar.gz ifp-1.3-binaries.tgz
For more detail on IFP and what to do with it, please see the IFP README file.
Feedback
If you find a defect in IFP, I encourage you to please let me know,
but please check the list of known IFP defects first. I can be
reached at simon_baldwin@yahoo.com.
I'd appreciate even more if you could send in a fix with your defect
report :-)
Thank you, and have fun with IFP.
Changes List
The first release of IFP was version 0.1a. The following list
indicates changes made to IFP for release 0.2:
- Built Xglk library with 24-bit display patch.
- Added Glkterm build, and curses version of ifpe.
The previous ifpe is now xifpe.
- Extended URLs to download data via FTP, in addition to HTTP and
local files.
- Remote URL data is now downloaded asynchronously, using SIGIO.
- Added a URL cache, so that playing the same URL multiple times
requires only one download.
- Fixed a fault in the functions that reset Glk; this fault caused xlegion
to crash after playing some games (notably Glulx).
- Fixed an omission where plugins failed to unload their plugin
lists; this fault caused xlegion to crash on occasion after
playing two or more compressed games of different game file types.
- IFP now automatically detects loading of plugins that may in turn
load other plugins, and takes steps to ensure that the shared objects
in each get their own private execution space.
- Added full Blorb support. IFP can now handle Blorb files
containing either Glulx or Z-machine games.
Changes made to IFP for release 0.3:
- Added the AGiliTy 1.1.1 interpreter, for AGT (and AGX) games.
- Use of hash tables for improved performance of memory allocation
functions.
Changes made to IFP for release 0.4:
- Added the AdvSys 1.2 interpreter.
- Added the Level 9 interpreter (SNA format files only).
- Minor improvements to URL cache code.
- Fixed an omission that caused xlegion to crash
unpredictably some time after failing to uncompress a game.
- General code tidy up and internal adjustments.
Changes made to IFP for release 0.5:
- Added the Magnetic Scrolls interpreter.
- Updated to the latest versions of the Tads, Hugo, Level9, and
AGiliTy interpreters.
- Made the Pkunzip plugin more lenient when unable to uncompress
some archived files.
- Corrected #includes in IFP header files to work with any Glk
library; previously, these #include'd some Xglk-specific header files.
- Minor internal interface adjustments, and some library error
tightening.
- IFP is probably stable enough now to shake off the "beta" tag.
Changes made to IFP for release 1.1:
- Updated to the latest versions of the Tads, Hugo (twice), Level9,
AGiliTy, and Magnetic Scrolls interpreters.
- Added a Nitfol patch to fix eight bit characters in Spanish games.
- Added a further Nitfol patch to fix null pointer dereferences in
Nitfol's game debugging code.
- Applied an Xglk patch to permit eight bit characters to be
entered.
- Added example games to the binary distribution.
- The usual minor internal adjustments and code improvements.
Changes made to IFP for release 1.2:
- Updated to the latest version of the Hugo interpreter, including
graphics support.
- Updated to the latest version of the Magnetic Scrolls
interpreter, now with graphics animations.
- Updated to the latest versions of the Level9 and AGiliTy
interpreters.
- Updated to version 2.5.8 of the TADS2 interpreter.
- Added the SCARE interpreter to enable IFP to handle Adrift games.
- Additional patches to Nitfol to fix Z-machine V1 and V2 game
problems.
- Yet more patches to Nitfol to mask display flicker and other
miscellanea.
- Patches to Advsys to tidy up assorted Glk library complaints.
- Minor fixes to IFP HTTP and FTP URL download cancel functions.
- Defined Latin-1 as the native character set for Glkterm builds of
IFP.
- Updated IFP's garbage collection hashing to enable it to cope
with SCARE's extreme heap space demands.
- Other minor internal adjustments.
Changes made to IFP for release 1.3:
- Updated to the latest version of the Hugo interpreter, version
3.1.
- Updated to version 2.5.9 of the TADS2 interpreter.
- Updated to version 1.3.3 of the SCARE interpreter.
- Switched to building Nitfol without debugging, for improved
stability.
- Optimized builds of the Glulx and Alan interpreters.
- Added dynamic loading of Glk libraries, and created three
corresponding pluggable Glk's.
- Combined xifpe and ifpe into a single binary, with
runtime Glk selection.
- Rewrote legion to run
with all three supplied Glk libraries.
- Added IFP user-specific configurations and preferences through a
.ifprc file.
- Removed non-essential material from the IFP library man pages.
- Copious internal code style changes, optimizations, and
adjustments.