Hardware-FDC Variable Density Tracks

27 Janurary 2005

Implemented fraction-based timing to support density changes in the FDC emulator.

Added a new library lock flag for creating density maps as fractions. This saves on conversion from the original density map format as well as making it possible to let density map buffers be managed by the library. No image format conversion is needed.

This means that variable density tracks on hardware-FDC systems are now supported by the IPF library (which in turn serves the FDC emulator). Examples include many Atari ST Copylock games.

In our modified WinSTon (Atari ST) emulator, some of them work and some of them fail. Games like Badlands, Bloodwych, Exile, Plotting, Rodland work (more precisely they now pass the protection check). Rodland for example, passes the Copylock check perfectly but breaks when starting a level. Since Copylock is randomly generated code and uses heavy encryption it is pretty safe to assume that emulation/cpu/core bugs in WinSTon cause the bad ones to fail. See previous WIP’s on this.

Note that the same situation (emulation core bugs) happened when we started working with Amiga games and getting them to work with WinUAE. The CPU core was greatly improved by that fact that there was now code available running from original games that highlighted the bugs. However, the difference is:

  • WinUAE was (and is) still actively developed.
  • WinSTon’s CPU core is written in assembler, and so it is frighteningly hard to debug - especially by people unfamilar with it.

So having these games fail is extremely frustrating. We are powerless to fix these core problems in WinSTon, and we have spent almost a month making this stuff work. We will talk about this more in a future WIP.