Analyser: Brainstorming toward unprofessionally duplicated MFM disk support


Some recent interest in the game ‘The Last Ninja’ for the Archimedes caused us to look back at the previous dumps we had for this system.

They all seem to be home duplicated, despite having 3 copies to work from. The format this game uses is currently unsupported as it would undermine some pairing logic; attaching block headers to block content. This is not an issue with any Amiga formats but it is a very real threat to the integrity of the generic MFM format. Right now, any non-duplicated generic MFM disks signal a script generator error1), otherwise it is possible that the wrong block content is paired with a header as the best valid match. The real world chances of this are almost non-existent, but it is not entirely impossible in some corner cases and it should be catered for.

This investigation led to some inspiration, and we are now working on a non-obvious, but ideal solution that fits the analyser pipeline perfectly. Thankfully, it is also rather trivial to implement.

If the track data is found to have an unaligned data block (i.e. modified MFM), all the pointers are available to create a new buffer with aligned data, and restart the process with that instead. It is probably also useful to signal back to the pipeline that it is modified data regardless. One thing that needs to be taken care of is when a format other than MFM is selected, since the analyser has no concept of hard-wired formats further down the pipe. One possible solution is to make a copy of the track data if a new set is created and restore the original data each time a format analysis starts.

Before this new insight, we were thinking of supporting features that may quickly become very very complicated. This way, the data is managed in a way that is already well supported. This is a large step toward our goal of multi-platform generic MFM support in the analyser.

1) An error displayed by CTA. Most errors cancel further script generation apart from a warning that indicates a possible unknown protection on the track was found.