Firstly, thanks for a great update to Elite! I'm surprised by how much new content you've added to the original Spectrum version.
I've found a bug that seems to cause memory corruption when using options from the Pause menu when the ship is flying. Selecting either "Change Control" or "Rotate Lasers Turrets" from the Pause menu triggers it. It seems to only affect options that don't have an On/Off toggle. Here's a video showing it happening to me: https://youtu.be/1LSNGNSA3LY
I'm using v1.07 and have tried both TAP and TRD versions in SpecEmu and Spectaculator, but can reproduce it in all cases.
I've had a look at the code and think I might be able to see what is causing it:
Код:
@D150 in page 6:
EX (SP),HL
INC C
JR Z,LD16F
DEC C
PUSH HL
AND C
LD HL,#D384
JR NZ,LD15F
LD HL,#D388
LD15F: CALL #86BB
XOR A
LD (#7282),A
POP DE
LD HL,#C016
LD C,#03
CALL #AF8A
LD16F: POP HL
The first JR Z skips displaying the On/Off label, but it also skips setting the screen MSB bit 7 back to zero in #7282. Without that I'm seeing corruption later, but manually setting to zero seems to avoid it. Hopefully that helps you look in the right place.
I've also spotted a few typos in the English translations too:
GALAXY GYPERDRIVE -> GALAXY HYPERDRIVE
MILITARY GALAXY GYPERDRIVE -> MILITARY GALAXY HYPERDRIVE
EXPERIMENTAL GALAXY GYPERDRIVE -> EXPERIMENTAL GALAXY HYPERDRIVE
CLOACKING DEVICE -> CLOAKING DEVICE
I'm also porting the game to run on the SAM Coupé, which has a different memory paging system but with a few patches it can be made to work. I hope that's OK.