Alberto Garcia - 2019-01-22

I managed to fix this accidentally while working on the fix for [bugs:#431], so after having a quick look at this game here's what I think it happens:

After the basic code there's an 8643 byte loader that ends with a 7ms pause and is followed by a list of pulses of different lenghts (I suppose that this is a copy protection mechanism).

Back to the 8643 byte loader: trap_load_block() puts the code in memory and updates all registers but doesn't touch the value of tape_microphone.

Since libspectrum doesn't change the tape signal level during the 7ms pause, what seems to happen is that the Gryzor loader expects an edge before the copy protection pulses, but that edge never arrives.

You can verify this by adding a simple tape_microphone=1; at the end of tape_load_trap(). That's enough to make Gryzor load.

 

Related

Bugs: #431