Speedlock and Fix Functionality

1 June 2003

Disk Format / Protection


  • Emerald Software: on Running Man and Vigilante.
  • Very old Rob Northen protection on the retail version of Operation Wolf.
  • 4us protection data track on Plague
  • Speedlock data tracks on Xenophobe
  • Speedlock Amiga timing track used on: Defenders of the Earth, Dragons Breath (UK), International Soccer Challenge, retail Novagen games, New York Warriors, Risk the World Conquest Game, Super Off-Road... and possibly others.


  • Added support for Death or Glory mission disk to TL format


  • Running Man, it is Emerald Software

Analyser, New

Importing and exporting images that contain fixed track data is fully supported. See Fix Functionality.

Sampling: Changing track data to an alternate sampling implementation or back. Currently 2us MFM vs 4us MFM is supported, which is good enough to work with the only game that uses 4us MFM data for something useful so far. Part of the game code is recorded in 4us MFM. The sampling rate is toggled in the analyser for the selected track or range.

Density detection for the Speedlock Amiga protection, then Speedlock timing supported by both the library and analyser.

It is possible now to replace noise tracks with generated data, required for Perihelion fix.

CAPS Image User Library, New

Speedlock timing support.

Support for memory mapped image files to allow loading of IPF images from within compressed archive files (e.g. ZIP).

Fix Functionality

Added an option to the format descriptor to call a built-in fix routine for formats where such functionality is achievable and where there doesn’t appear to have ever been a good mastering run. Most notably badly mastered Copylock tracks.

Currently supported formats are:

  1. Copylock Amiga: mastering errors on titles like Fighter Bomber or Putty
  2. Copylock Amiga, old: mastering errors on the PAL version of Populous.

Fixable formats are marked with a ‘+’ sign in the format selector list.

Before automatic fixing is invoked, the correct format should be selected for the bad tracks. Otherwise a mismatching format may be selected by the automatic analysation because the tracks may not be quite what was expected. Alternatively manual format selection in the first place is fine as well.

Fixing is done simply by pressing a “fix” button with a selected track or range, just like analysing a track or range of tracks, i.e. it is possible to select “analyse” wait for the result, change the format of the bad tracks if any incorrect ones are spotted, then select “fix”. The function tries to correct and replace any bad tracks it can. If for any reason a track can’t be corrected, the original data remains unchanged.

It is important to note that tracks are only fixed if we are positive that it is identical to the original master. As has been said in a previous WIP, an exact, complete Copylock track can be generated from only 24 bits (the disk key), as all a Copylock track contains is generated data. Therefore, as long at the key can be found, the original track can be completely and exactly reproduced from it.

There may be other formats where this is possible, which will be useful if we find other games with similar problems.

Perihelion Fix

Perihelion is high contender for the incredibly optimistic (broken) disk system award. The loader reads ahead of the track data while it processes the previous track and when it encounters a problem it prompts the user to retry. However when the game tries to process the track data from 79.1 it reads 80.0 trying to find marks on it. Track 80.0 is unformatted and hence it is highly optimistic to assume that operation will succeed - it may or may not succeed depending on the drive model, the disk condition and other perfectly random factors...

What probably happened:

  1. It worked on the developers machines - older models are more likely to work.
  2. Track 80.0 was originally formatted on the master, but they set the Trace script to 80 tracks (0-79) by accident.

Since we know that Psygnosis didn’t ever bother verifying their duplication, case 2 is a very real possibility!

The fix replaces the random noise data with a generated mark that satisfies the read-ahead routine. Note: This is not a change to the game, just a previously unformatted (containing no data) track is changed because it was not supposed to be unformatted in the first place. This is to allow the read ahead to always succeed rather than just leaving it to chance. Basically we are adding data that was clearly meant to be on the duplicated disks, but either bad scripting or a bad master was used. We have not changed any “real” data whatsoever, just prevented the disk system from malfunctioning.

This is different from the fix functionality above.

Speedlock Protection

The unknown cell density based protection track featured in the last WIP has now been identified as “Speedlock”.

Fig 1: Speedlock protection track

A game worth mentioning, not just for being beautiful, but also for its Speedlock disk based copy protection is Dragons Breath, which can now be supported.

Speedlock is a much better and more complex density protection than Copylock, it also has better density checking routines. The things it lacks are a real disk key and decent encryption. Only the speed change is checked which should have been good enough, it is unlikely that anybody could copy the original disk properly anyway.

You need at least WinUAE 0.8.22 Release 7 and the latest IPF library to play Speedlock games.