MoonSound: Fix playback of tracks with a ROM data block.

It would never actually call SafeWriteRegisterWave since Device_ConnectInterface
dereferences the jump as an optimisation. We use a jr instead to avoid this.
1 files changed, 4 insertions(+), 13 deletions(-)

M src/drivers/MoonSound.asm
M src/drivers/MoonSound.asm +4 -13
@@ 18,13 18,8 @@ MoonSound: MACRO ?fmbase = MoonSound_FM_
 
 	; e = register
 	; d = value
-	SafeWriteRegisterWave:
-		jp super.SafeWriteRegisterWave
-	mapWaveNumber: equ $ - 2
-
-	; e = register
-	; d = value
-	MapWaveNumber: PROC
+	SafeWriteRegisterWave: PROC
+		jr super.SafeWriteRegisterWave  ; overwritten to jr $ + 2 when mapping wave numbers
 		ld a,e
 		cp 38H
 		jr nc,super.SafeWriteRegisterWave

          
@@ 72,6 67,7 @@ MoonSound: MACRO ?fmbase = MoonSound_FM_
 ; iy = drivers
 MoonSound_Construct:
 	call Driver_Construct
+	ld (ix + MoonSound.SafeWriteRegisterWave + 1),MoonSound.super.SafeWriteRegisterWave - (MoonSound.SafeWriteRegisterWave + 2)
 	call MoonSound_Detect
 	jp nc,Driver_NotFound
 	jp OPL4_Reset

          
@@ 129,12 125,7 @@ Loop:
 ; ix = this
 MoonSound_EnableWaveNumberMapping:
 	call MoonSound_InitialiseWaveNumberMap
-	ld e,ixl
-	ld d,ixh
-	ld hl,MoonSound.MapWaveNumber
-	add hl,de
-	ld (ix + MoonSound.mapWaveNumber),l
-	ld (ix + MoonSound.mapWaveNumber + 1),h
+	ld (ix + MoonSound.SafeWriteRegisterWave + 1),0
 	ret
 
 ; ix = this