… wrote:
it was originally designed so it would only work on real SAM hardware, not under emulation
Not quite… Defender runs with interrupts permanently disabled, relying on the HPEN tracking to determine whether he was ahead or behind the current frame. This tracking was extremely timing sensitive, and on older (less accurate) versions of SimCoupe the speed was very variable, spoiling the gameplay experience. This was enough for Chris to add a timing test, which measured the interrupt-to-interrupt cycle time. The result of this was used to form an execution address for the start of the game, and any difference would cause the game to crash instead of start.
Once the SimCoupe timing had been fixed the game ran fine, and Chris was quite happy for it to run in the emulator. So he wasn’t anti-emulator, just anti-inaccurate-emulator!
Not quite...
… wrote:
it was originally designed so it would only work on real SAM hardware, not under emulation
Not quite… Defender runs with interrupts permanently disabled, relying on the HPEN tracking to determine whether he was ahead or behind the current frame. This tracking was extremely timing sensitive, and on older (less accurate) versions of SimCoupe the speed was very variable, spoiling the gameplay experience. This was enough for Chris to add a timing test, which measured the interrupt-to-interrupt cycle time. The result of this was used to form an execution address for the start of the game, and any difference would cause the game to crash instead of start.
Once the SimCoupe timing had been fixed the game ran fine, and Chris was quite happy for it to run in the emulator. So he wasn’t anti-emulator, just anti-inaccurate-emulator!