Gap Support: Analyser and IPF Library


Preparation for the biggest change of the encoder in the analyser and decoder library since 2003.

Decided to remove some advanced gap related features that were never ever used in the IPF format. These features won’t be used due to the arrival of the much more flexible gap pattern scripting that is used by the MFM script generator - and possibly any other script generators in the future like FM. Of course generated scripts use no hacks - it’s just one stage of the analyser pipeline, and therefore all new features can be used by manually created scripts as well, making the removed features completely obsolete.

Maintaining compatibility with the removed gap features (that were never used) would have been very difficult anyway alongside with the new gap pattern system.

Created code and verified all currently preserved images to see if they would fit the new/modified gap encoding and some other changes introduced.

Some other features verified as unused have been removed to enable a slightly different decoder approach, e.g. allowing any kind of encoding and recording to be mixed on the same track per logical block and not limiting certain data to specific cell positions - although this is how duplication scripts work, it is limited when dealing with “ad-hoc” mixed encoding and recordings that might or might not exist somewhere out there on the zillions of platforms we are about to support. If anything like that was ever used, Apple and C64 are the likely platforms since both allow any combination of cells to be written through software/firmware.

These new features allow us to add support for Katakis v1.0, the only known game to use this kind of mixed recording. We will do that eventually.


  • Added SPS Encoder/Decoder support. Old IPF libraries will not be able to read any tracks from images generated with the new analyser by design. Applications will get back “incompatible image” error messages for any operation from the library, how they handle that is a different matter.
  • Importing old image descriptor files (IPX) generate identical images to those generated by older analyser releases.
  • Creating a new image automatically creates only the new image type.
  • The library can recognise the different image types and behave accordingly.
  • Replaced some statistical data previously present in images with runtime-generated data; although the data is present in any old image (or new ones created from an IPX) it will no longer be used regardless of image type.