Actions

SCHG How-to

Difference between revisions of "Port Sonic 3's Sound Driver to Sonic 1"

From Sonic Retro

(Stars Monitor)
(Boss music)
Line 5,217: Line 5,217:
 
</asm>
 
</asm>
 
===Boss music===
 
===Boss music===
 +
on entry and exit, the special stage should now play the correct sound.  Time to fix the boss music, so find:
 +
<asm>
 +
loc_6ED0:
 +
move.w #$8C,d0
 +
bsr.w PlaySound ; play boss music
 +
</asm>
 +
and change it to:
 +
<asm>
 +
loc_6ED0:
 +
move.w #$19,d0
 +
bsr.w PlaySound ; play boss music
 +
</asm>
 +
then find:
 +
<asm>
 +
loc_6F4A:
 +
move.w #$8C,d0
 +
bsr.w PlaySound ; play boss music
 +
</asm>
 +
and change it to:
 +
<asm>
 +
loc_6F4A:
 +
move.w #$19,d0
 +
bsr.w PlaySound ; play boss music
 +
</asm>
 +
then find:
 +
<asm>
 +
loc_70D0:
 +
move.w #$8C,d0
 +
bsr.w PlaySound ; play boss music
 +
</asm>
 +
and change it to:
 +
<asm>
 +
loc_70D0:
 +
move.w #$19,d0
 +
bsr.w PlaySound ; play boss music
 +
</asm>
 +
then find:
 +
<asm>
 +
loc_7144:
 +
move.w #$8C,d0
 +
bsr.w PlaySound ; play boss music
 +
</asm>
 +
and change it to:
 +
<asm>
 +
loc_7144:
 +
move.w #$8C,d0
 +
bsr.w PlaySound ; play boss music
 +
</asm>
 +
then find:
 +
<asm>
 +
loc_71EC:
 +
move.w #$19,d0
 +
bsr.w PlaySound ; play boss music
 +
</asm>
 +
===GHZ3 music restore, the modern way===
 +
I not that long ago remembered that since sonic1 does not have music memory support, the game's way of playing the previous song is hard coded, so we need to fix that since we added memory support earlier, so find:
 +
<asm>
 +
oc_179E0:
 +
clr.w $12(a0)
 +
move.w #$81,d0
 +
jsr (PlaySound).l ; play GHZ music
 +
</asm>
 +
and change it to:
 +
<asm>
 +
oc_179E0:
 +
clr.w $12(a0)
 +
move.w ($FFFFFF90).w,d0
 +
jsr (PlaySound).l ; play GHZ music
 +
</asm>
 +
 +
===LZ3 music restore, the modern way===
 +
now find:
 +
<asm>
 +
loc_18112:
 +
move.w #$82,d0
 +
jsr (PlaySound).l ; play LZ music
 +
</asm>
 +
and change it to:
 +
<asm>
 +
loc_18112:
 +
move.w ($FFFFFF90).w,d0
 +
jsr (PlaySound).l ; play LZ music
 +
</asm>
 +
 +
===MZ3 music restore, the modern way===
 +
now find:
 +
<asm>
 +
loc_1856C:
 +
clr.w $12(a0)
 +
move.w #$83,d0
 +
jsr (PlaySound).l ; play MZ music
 +
</asm>
 +
and change it to:
 +
<asm>
 +
loc_1856C:
 +
clr.w $12(a0)
 +
move.w ($FFFFFF90).w,d0
 +
jsr (PlaySound).l ; play MZ music
 +
</asm>
 +
 +
===SLZ3 music restore, the modern way===
 +
now find:
 +
<asm>
 +
loc_18BB4:
 +
clr.w $12(a0)
 +
move.w #$84,d0
 +
jsr (PlaySound).l ; play SLZ music
 +
</asm>
 +
and change it to:
 +
<asm>
 +
loc_18BB4:
 +
clr.w $12(a0)
 +
move.w ($FFFFFF90).w,d0
 +
jsr (PlaySound).l ; play SLZ music
 +
</asm>
 +
 +
===SYZ3 music restore, the modern way===
 +
find:
 +
<asm>
 +
loc_194E0:
 +
clr.w $12(a0)
 +
move.w #$85,d0
 +
jsr (PlaySound).l ; play SYZ music
 +
</asm>
 +
and change it to:
 +
<asm>
 +
loc_194E0:
 +
clr.w $12(a0)
 +
move.w ($FFFFFF90).w,d0
 +
jsr (PlaySound).l ; play SYZ music
 +
</asm>
 +
 +
===SBZ2 Cut scene, Sonic & Knuckles style===
 +
that fixes the boss music, though you could choose different music per-level if you wish within this part of the how-to.  Next we will fix the cut scene just before SBZ3, and I would choose to have that music be SBZ music, to have an effect like the cut scenes in s&k.  So find:
 +
<asm>
 +
Obj3A_SBZ2: ; XREF: Obj3A_ChkPos2
 +
cmpi.b #4,$1A(a0)
 +
bne.w DeleteObject
 +
addq.b #2,$24(a0)
 +
clr.b ($FFFFF7CC).w ; unlock controls
 +
move.w #$8D,d0
 +
jmp (PlaySound).l ; play FZ music
 +
</asm>
 +
and change it to
 +
<asm>
 +
Obj3A_SBZ2: ; XREF: Obj3A_ChkPos2
 +
cmpi.b #4,$1A(a0)
 +
bne.w DeleteObject
 +
addq.b #2,$24(a0)
 +
clr.b ($FFFFF7CC).w ; unlock controls
 +
move.w ($FFFFFF90).w,d0
 +
jmp (PlaySound).l ; play level music
 +
</asm>
 +
 +
===Air countdown music===
 +
that causes the game to use whatever music the level started with, but now we need to fix the air counter music, so find:
 +
<asm>
 +
move.w #$92,d0
 +
jsr (PlaySound).l ; play countdown music
 +
 +
loc_13F02:
 +
</asm>
 +
and change it to:
 +
<asm>
 +
move.w #$31,d0
 +
jsr (PlaySound).l ; play countdown music
 +
 +
loc_13F02:
 +
</asm>
 +
this uses the sonic 3 version of the underwater counter music, or you can use a custom one in a location of your own choice.  Now lets fix the sound effects.
 +
 +
==Fixing the sound effects so that they sound right, or at least close to right==
 +
So now we have all the music and a few sounds fixed, but what about the general sound effects (A0 - CF in sonic 1).  Sound effects in sonic 3 start at 33 and end at DC, so lets fix them in sonic 1 order, starting with the jump sound, so find:
 +
===Sound $A0===

Revision as of 05:58, 4 March 2011

(Original guide by Kram1024)
Updated by Kram1024

You probably saw a quick and dirty way to do this on SSRG, but lets do it the proper way, the way that sonic team would do it.

Contents

Overview

First off, Sonic 3's sound driver has the V_Int reloader built into it so it is not needed, some routines need replacement, sounds need fixing, and we need to replace the sounds and music. We will be using the hivebrain version, if you wish to do it via svn version, I am sure you can come up with a way that works by seeing what changes I made in the hivebrain version.

Preparing to use Sonic 3/K/3K sound system

The Vertical Interrupt and Horizontal Interrupt need to be fixed, since the sonic 1/2 system uses them but the Sonic 3/K/3K system doesn't.

Removal of master V_Int branch to s1driver point

first we will fix the vertical interrupt, by changing: <asm> loc_B5E: ; XREF: loc_B88 jsr (sub_71B4C).l </asm>

to: <asm> loc_B5E: ; XREF: loc_B88 nop </asm>

Removal of H_Int branch point to s1driver

Now we locate: <asm> loc_119E: ; XREF: PalToCRAM clr.b ($FFFFF64F).w movem.l d0-a6,-(sp) bsr.w Demo_Time jsr (sub_71B4C).l movem.l (sp)+,d0-a6 rte

End of function PalToCRAM

</asm> See another familiar line? Yes, you've got it, do the same thing to it: <asm> loc_119E: ; XREF: PalToCRAM clr.b ($FFFFF64F).w movem.l d0-a6,-(sp) bsr.w Demo_Time nop movem.l (sp)+,d0-a6 rte

End of function PalToCRAM

</asm> That effectively disables the sonic1 style v_int and h_int driver reloading that we will not need and prevents a nasty error down the road.

Upgrading the Load Driver Routine

Okay, we disabled the sonic1 driver junk, wouldn't we want now to use the sonic3 driver instead? Here is where we start installing it. Locate: <asm>

---------------------------------------------------------------------------
Subroutine to load the sound driver
---------------------------------------------------------------------------
||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


SoundDriverLoad: ; XREF: GameClrRAM; TitleScreen nop move.w #$100,($A11100).l ; stop the Z80 move.w #$100,($A11200).l ; reset the Z80 lea (Kos_Z80).l,a0 ; load sound driver lea ($A00000).l,a1 bsr.w KosDec ; decompress move.w #0,($A11200).l nop nop nop nop move.w #$100,($A11200).l ; reset the Z80 move.w #0,($A11100).l ; start the Z80 rts

End of function SoundDriverLoad

</asm>

and replace it all with: <asm>

---------------------------------------------------------------------------
Subroutine to load the sound driver
---------------------------------------------------------------------------
||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||

SoundDriverLoad: ; XREF: GameClrRAM; TitleScreen nop move.w #$100,($A11100).l ; Z80 bus request - Start move.w #$100,($A11200).l ; Z80 stop reset lea (DriverData).l,a0 lea ($A00000).l,a1 move.w #DriverDataEnd-DriverData,d0

DriverLoadLoop: move.b (a0)+,(a1)+ dbf d0,DriverLoadLoop lea (DriverPointers).l,a0 lea ($A01300).l,a1 move.w #DriverPointersEnd-DriverPointers,d0

DriverPointersLoadLoop: move.b (a0)+,(a1)+ dbf d0, DriverPointersLoadLoop lea (UniversalVoiceBank).l,a0 lea ($A017D8).l,a1 move.w #UniversalVoiceBankEnd-UniversalVoiceBank,d0

UniversalVoiceBankLoadLoop: move.b (a0)+,(a1)+ dbf d0,UniversalVoiceBankLoadLoop lea (DriverResetData).l,a0 lea ($A01C00).l,a1 move.w #DriverResetDataEnd-DriverResetData,d0

DriverResetDataLoadLoop: move.b (a0)+,(a1)+ dbf d0,DriverResetDataLoadLoop btst #6,($FFFFFFF8).w beq.s DriverAlreadyInitialized move.b #1,($A01C02).l

DriverAlreadyInitialized: move.w #0,($A11200).l nop nop nop nop move.w #$100,($A11200).l ; Z80 start reset move.w #0,($A11100).l ; Z80 bus request - Stop rts

End of function SoundDriverLoad


DriverResetData: dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 DriverResetDataEnd: </asm>

Upgrading the Playback Routines

Now we have the code to load the new driver, time to add the new playback routines.

Upgrade Music Routine

First the PlaySound routine, locate: <asm>

---------------------------------------------------------------------------
Subroutine to play a sound or music track
---------------------------------------------------------------------------
||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


PlaySound: move.b d0,($FFFFF00A).w rts

End of function PlaySound

</asm>

and replace it completely with: <asm>

---------------------------------------------------------------------------
Subroutine to play a sound or music track
---------------------------------------------------------------------------
||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


PlaySound: cmpi.w #$FB,d0 blt.s PlayNotSpecialFlag bhi.s TestForNormalSpeed move #8,d0 jmp SetTempo

TestForNormalSpeed: cmpi.w #$FC,d0 bne.s PlayNotSpecialFlag clr.w d0 jmp SetTempo

PlayNotSpecialFlag: move.w #$100,($A11100).l

PlaySoundZ80NotStopped: btst #0,($A11100).l bne.s PlaySoundZ80NotStopped ; loop until it says it's stopped move.b d0,($A01C0A).l move.w #0,($A11100).l rts

End of function PlaySound
---------------------------------------------------------------------------
Exclusive sound/music subroutine
---------------------------------------------------------------------------


||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


PlaySound_Ex: tst.b 4(A0) bpl.s SkipPlaySound_Special </asm>

sound playback routines

now find: <asm>

---------------------------------------------------------------------------
Subroutine to play a special sound/music (E0-E4)
E0 - Fade out
E1 - Sega
E2 - Speed up
E3 - Normal speed
E4 - Stop
---------------------------------------------------------------------------
||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


PlaySound_Special: move.b d0,($FFFFF00B).w rts

End of function PlaySound_Special
===========================================================================
---------------------------------------------------------------------------
Unused sound/music subroutine
---------------------------------------------------------------------------

PlaySound_Unk: move.b d0,($FFFFF00C).w rts </asm>

and replace it entirely with: <asm>

---------------------------------------------------------------------------
Unused sound/music subroutine
---------------------------------------------------------------------------

PlaySound_Unk: nop

---------------------------------------------------------------------------
Subroutine to play a special sound/music (FB-FF)
---------------------------------------------------------------------------

PlaySound_Special: move.w #$100,($A11100).l

PlaySound_SpecialZ80NotStopped: btst #0,($A11100).l bne.s PlaySound_SpecialZ80NotStopped cmp.b ($A01C0B).l,d0 beq.s PlaySound_Special1 tst.b ($A01C0B).l bne.s PlaySound_Special0 move.b d0,($A01C0B).l move.w #0,($A11100).l rts

PlaySound_Special0: move.b d0,($A01C0C).l

PlaySound_Special1: move.w #0,($A11100).l

SkipPlaySound_Special: rts

End of function PlaySound_Special
---------------------------------------------------------------------------
Subroutine to change the music tempo
---------------------------------------------------------------------------

SetTempo: move.w #$100,($A11100).l

SetTempoZ80NotStopped: btst #0,($A11100).l bne.s SetTempoZ80NotStopped move.b D0,($A01C08).l move.w #0,($A11100).l rts </asm>

Upgrading Pause / Resume routines

Now the playback routines are fixed and we have a routine to set the tempo the way the sneakers do, which we will elaberate later on, but we still have to update the pause / resume routines to the sonic 3 equivilents.

Find: <asm>

---------------------------------------------------------------------------
Subroutine to pause the game
---------------------------------------------------------------------------
||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


PauseGame: ; XREF: Level_MainLoop; et al nop tst.b ($FFFFFE12).w ; do you have any lives left? beq.s Unpause ; if not, branch tst.w ($FFFFF63A).w ; is game already paused? bne.s loc_13BE ; if yes, branch btst #7,($FFFFF605).w ; is Start button pressed? beq.s Pause_DoNothing ; if not, branch

loc_13BE: move.w #1,($FFFFF63A).w ; freeze time move.b #1,($FFFFF003).w ; pause music

loc_13CA: move.b #$10,($FFFFF62A).w bsr.w DelayProgram tst.b ($FFFFFFE1).w ; is slow-motion cheat on? beq.s Pause_ChkStart ; if not, branch btst #6,($FFFFF605).w ; is button A pressed? beq.s Pause_ChkBC ; if not, branch move.b #4,($FFFFF600).w ; set game mode to 4 (title screen) nop bra.s loc_1404

===========================================================================

Pause_ChkBC: ; XREF: PauseGame btst #4,($FFFFF604).w ; is button B pressed? bne.s Pause_SlowMo ; if yes, branch btst #5,($FFFFF605).w ; is button C pressed? bne.s Pause_SlowMo ; if yes, branch

Pause_ChkStart: ; XREF: PauseGame btst #7,($FFFFF605).w ; is Start button pressed? beq.s loc_13CA ; if not, branch

loc_1404: ; XREF: PauseGame move.b #$80,($FFFFF003).w

Unpause: ; XREF: PauseGame move.w #0,($FFFFF63A).w ; unpause the game

Pause_DoNothing: ; XREF: PauseGame rts

===========================================================================

Pause_SlowMo: ; XREF: PauseGame move.w #1,($FFFFF63A).w move.b #$80,($FFFFF003).w rts

End of function PauseGame

</asm>

and replace it completely with: <asm>

---------------------------------------------------------------------------
Subroutine to pause the game
---------------------------------------------------------------------------
||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


PauseGame: ; XREF: Level_MainLoop; et al nop tst.b ($FFFFFE12).w beq Unpause tst.w ($FFFFF63A).w bne.s PauseGame_AlreadyPaused move.b ($FFFFF605).w,d0 or.b ($FFFFF607).w,d0 andi.b #$80,d0 beq Pause_DoNothing

PauseGame_AlreadyPaused: move.w #1,($FFFFF63A).w move.w #$100,($A11100).l

PauseGameZ80NotStopped: btst #0,($A11100).l bne.s PauseGameZ80NotStopped move.b #1,($A01C10).l move.w #0,($A11100).l

PauseGameLoop: move.b #$10,($FFFFF62A).w jsr DelayProgram tst.b ($FFFFFFE1).w ; Edit: the value is $FFFFFFE1 in Sonic 1 beq.s Pause_ChkStart btst #6,($FFFFF605).w beq.s Pause_ChkBC move.b #$4,($FFFFF600).w ; Go To Title Screen nop bra.s PauseGame1

Pause_ChkBC: btst #4,($FFFFF604).w bne.s Pause_SlowMo btst #5,($FFFFF605).w bne.s Pause_SlowMo

Pause_ChkStart: cmpi.b #$E,($FFFFFE10).w bcs.s PauseGame0 cmpi.b #$12,($FFFFFE10).w bhi.s PauseGame0 tst.b ($FFFFFF8B).w bpl.s PauseGame0 btst #4,($FFFFF605).w beq.s PauseGame0 move.b #$C0,($FFFFF600).w bra.s PauseGame1

PauseGame0: move.b ($FFFFF605).w,d0 or.b ($FFFFF607).w,d0 andi.b #$80,d0 beq.s PauseGameLoop

PauseGame1: move.w #$100,($A11100).l

Pause_ChkStartZ80NotStopped: btst #0,($A11100).l bne.s Pause_ChkStartZ80NotStopped move.b #$80,($A01C10).l move.w #0,($A11100).l

Unpause: move.w #0,($FFFFF63A).w

Pause_DoNothing: rts

Pause_SlowMo: move.w #1,($FFFFF63A).w move.w #$100,($A11100).l

Pause_SlowMoZ80NotStopped: btst #0,($A11100).l bne.s Pause_SlowMoZ80NotStopped move.b #$80,($A01C10).l move.w #0,($A11100).l rts

End of function PauseGame

</asm>

Replacing 68k driver with new Z80 driver

We need the sound driver itself if we are going to have any sound and music, so we locate: <asm> align 2

Go_SoundTypes: dc.l SoundTypes ; XREF: Sound_Play Go_SoundD0: dc.l SoundD0Index ; XREF: Sound_D0toDF Go_MusicIndex: dc.l MusicIndex ; XREF: Sound_81to9F Go_SoundIndex: dc.l SoundIndex ; XREF: Sound_A0toCF off_719A0: dc.l byte_71A94 ; XREF: Sound_81to9F Go_PSGIndex: dc.l PSG_Index ; XREF: sub_72926

---------------------------------------------------------------------------
PSG instruments used in music
---------------------------------------------------------------------------

PSG_Index: dc.l PSG1, PSG2, PSG3 dc.l PSG4, PSG5, PSG6 dc.l PSG7, PSG8, PSG9 PSG1: binclude sound\psg1.bin PSG2: binclude sound\psg2.bin PSG3: binclude sound\psg3.bin PSG4: binclude sound\psg4.bin PSG6: binclude sound\psg6.bin PSG5: binclude sound\psg5.bin PSG7: binclude sound\psg7.bin PSG8: binclude sound\psg8.bin PSG9: binclude sound\psg9.bin

byte_71A94: dc.b 7, $72, $73, $26, $15, 8, $FF, 5

---------------------------------------------------------------------------
Music Pointers
---------------------------------------------------------------------------

MusicIndex: dc.l Music81, Music82 dc.l Music83, Music84 dc.l Music85, Music86 dc.l Music87, Music88 dc.l Music89, Music8A dc.l Music8B, Music8C dc.l Music8D, Music8E dc.l Music8F, Music90 dc.l Music91, Music92 dc.l Music93

---------------------------------------------------------------------------
Type of sound being played ($90 = music; $70 = normal sound effect)
---------------------------------------------------------------------------

SoundTypes: dc.b $90, $90, $90, $90, $90, $90, $90, $90, $90, $90, $90, $90, $90, $90, $90, $90 dc.b $90, $90, $90, $90, $90, $90, $90, $90, $90, $90, $90, $90, $90, $90, $90, $80 dc.b $70, $70, $70, $70, $70, $70, $70, $70, $70, $68, $70, $70, $70, $60, $70, $70 dc.b $60, $70, $60, $70, $70, $70, $70, $70, $70, $70, $70, $70, $70, $70, $7F, $60 dc.b $70, $70, $70, $70, $70, $70, $70, $70, $70, $70, $70, $70, $70, $70, $70, $80 dc.b $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $80, $90 dc.b $90, $90, $90, $90

||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


sub_71B4C: ; XREF: loc_B10; PalToCRAM move.w #$100,($A11100).l ; stop the Z80 nop nop nop

loc_71B5A: btst #0,($A11100).l bne.s loc_71B5A

btst #7,($A01FFD).l beq.s loc_71B82 move.w #0,($A11100).l ; start the Z80 nop nop nop nop nop bra.s sub_71B4C

===========================================================================

loc_71B82: lea ($FFF000).l,a6 clr.b $E(a6) tst.b 3(a6) ; is music paused? bne.w loc_71E50 ; if yes, branch subq.b #1,1(a6) bne.s loc_71B9E jsr sub_7260C(pc)

loc_71B9E: move.b 4(a6),d0 beq.s loc_71BA8 jsr sub_72504(pc)

loc_71BA8: tst.b $24(a6) beq.s loc_71BB2 jsr sub_7267C(pc)

loc_71BB2: tst.w $A(a6) ; is music or sound being played? beq.s loc_71BBC ; if not, branch jsr Sound_Play(pc)

loc_71BBC: cmpi.b #$80,9(a6) beq.s loc_71BC8 jsr Sound_ChkValue(pc)

loc_71BC8: lea $40(a6),a5 tst.b (a5) bpl.s loc_71BD4 jsr sub_71C4E(pc)

loc_71BD4: clr.b 8(a6) moveq #5,d7

loc_71BDA: adda.w #$30,a5 tst.b (a5) bpl.s loc_71BE6 jsr sub_71CCA(pc)

loc_71BE6: dbf d7,loc_71BDA

moveq #2,d7

loc_71BEC: adda.w #$30,a5 tst.b (a5) bpl.s loc_71BF8 jsr sub_72850(pc)

loc_71BF8: dbf d7,loc_71BEC

move.b #$80,$E(a6) moveq #2,d7

loc_71C04: adda.w #$30,a5 tst.b (a5) bpl.s loc_71C10 jsr sub_71CCA(pc)

loc_71C10: dbf d7,loc_71C04

moveq #2,d7

loc_71C16: adda.w #$30,a5 tst.b (a5) bpl.s loc_71C22 jsr sub_72850(pc)

loc_71C22: dbf d7,loc_71C16 move.b #$40,$E(a6) adda.w #$30,a5 tst.b (a5) bpl.s loc_71C38 jsr sub_71CCA(pc)

loc_71C38: adda.w #$30,a5 tst.b (a5) bpl.s loc_71C44 jsr sub_72850(pc)

loc_71C44: move.w #0,($A11100).l ; start the Z80 rts

End of function sub_71B4C


||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


sub_71C4E: ; XREF: sub_71B4C subq.b #1,$E(a5) bne.s locret_71CAA move.b #$80,8(a6) movea.l 4(a5),a4

loc_71C5E: moveq #0,d5 move.b (a4)+,d5 cmpi.b #-$20,d5 bcs.s loc_71C6E jsr sub_72A5A(pc) bra.s loc_71C5E

===========================================================================

loc_71C6E: tst.b d5 bpl.s loc_71C84 move.b d5,$10(a5) move.b (a4)+,d5 bpl.s loc_71C84 subq.w #1,a4 move.b $F(a5),$E(a5) bra.s loc_71C88

===========================================================================

loc_71C84: jsr sub_71D40(pc)

loc_71C88: move.l a4,4(a5) btst #2,(a5) bne.s locret_71CAA moveq #0,d0 move.b $10(a5),d0 cmpi.b #$80,d0 beq.s locret_71CAA btst #3,d0 bne.s loc_71CAC move.b d0,($A01FFF).l

locret_71CAA: rts

===========================================================================

loc_71CAC: subi.b #$88,d0 move.b byte_71CC4(pc,d0.w),d0 move.b d0,($A000EA).l move.b #$83,($A01FFF).l rts

End of function sub_71C4E
===========================================================================

byte_71CC4: dc.b $12, $15, $1C, $1D, $FF, $FF

||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


sub_71CCA: ; XREF: sub_71B4C subq.b #1,$E(a5) bne.s loc_71CE0 bclr #4,(a5) jsr sub_71CEC(pc) jsr sub_71E18(pc) bra.w loc_726E2

===========================================================================

loc_71CE0: jsr sub_71D9E(pc) jsr sub_71DC6(pc) bra.w loc_71E24

End of function sub_71CCA


||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


sub_71CEC: ; XREF: sub_71CCA movea.l 4(a5),a4 bclr #1,(a5)

loc_71CF4: moveq #0,d5 move.b (a4)+,d5 cmpi.b #-$20,d5 bcs.s loc_71D04 jsr sub_72A5A(pc) bra.s loc_71CF4

===========================================================================

loc_71D04: jsr sub_726FE(pc) tst.b d5 bpl.s loc_71D1A jsr sub_71D22(pc) move.b (a4)+,d5 bpl.s loc_71D1A subq.w #1,a4 bra.w sub_71D60

===========================================================================

loc_71D1A: jsr sub_71D40(pc) bra.w sub_71D60

End of function sub_71CEC


||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


sub_71D22: ; XREF: sub_71CEC subi.b #$80,d5 beq.s loc_71D58 add.b 8(a5),d5 andi.w #$7F,d5 lsl.w #1,d5 lea word_72790(pc),a0 move.w (a0,d5.w),d6 move.w d6,$10(a5) rts

End of function sub_71D22


||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


sub_71D40: ; XREF: sub_71C4E; sub_71CEC; sub_72878 move.b d5,d0 move.b 2(a5),d1

loc_71D46: subq.b #1,d1 beq.s loc_71D4E add.b d5,d0 bra.s loc_71D46

===========================================================================

loc_71D4E: move.b d0,$F(a5) move.b d0,$E(a5) rts

End of function sub_71D40
===========================================================================

loc_71D58: ; XREF: sub_71D22 bset #1,(a5) clr.w $10(a5)

||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


sub_71D60: ; XREF: sub_71CEC; sub_72878; sub_728AC move.l a4,4(a5) move.b $F(a5),$E(a5) btst #4,(a5) bne.s locret_71D9C move.b $13(a5),$12(a5) clr.b $C(a5) btst #3,(a5) beq.s locret_71D9C movea.l $14(a5),a0 move.b (a0)+,$18(a5) move.b (a0)+,$19(a5) move.b (a0)+,$1A(a5) move.b (a0)+,d0 lsr.b #1,d0 move.b d0,$1B(a5) clr.w $1C(a5)

locret_71D9C: rts

End of function sub_71D60


||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


sub_71D9E: ; XREF: sub_71CCA; sub_72850 tst.b $12(a5) beq.s locret_71DC4 subq.b #1,$12(a5) bne.s locret_71DC4 bset #1,(a5) tst.b 1(a5) bmi.w loc_71DBE jsr sub_726FE(pc) addq.w #4,sp rts

===========================================================================

loc_71DBE: jsr sub_729A0(pc) addq.w #4,sp

locret_71DC4: rts

End of function sub_71D9E


||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


sub_71DC6: ; XREF: sub_71CCA; sub_72850 addq.w #4,sp btst #3,(a5) beq.s locret_71E16 tst.b $18(a5) beq.s loc_71DDA subq.b #1,$18(a5) rts

===========================================================================

loc_71DDA: subq.b #1,$19(a5) beq.s loc_71DE2 rts

===========================================================================

loc_71DE2: movea.l $14(a5),a0 move.b 1(a0),$19(a5) tst.b $1B(a5) bne.s loc_71DFE move.b 3(a0),$1B(a5) neg.b $1A(a5) rts

===========================================================================

loc_71DFE: subq.b #1,$1B(a5) move.b $1A(a5),d6 ext.w d6 add.w $1C(a5),d6 move.w d6,$1C(a5) add.w $10(a5),d6 subq.w #4,sp

locret_71E16: rts

End of function sub_71DC6


||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


sub_71E18: ; XREF: sub_71CCA btst #1,(a5) bne.s locret_71E48 move.w $10(a5),d6 beq.s loc_71E4A

loc_71E24: ; XREF: sub_71CCA move.b $1E(a5),d0 ext.w d0 add.w d0,d6 btst #2,(a5) bne.s locret_71E48 move.w d6,d1 lsr.w #8,d1 move.b #-$5C,d0 jsr sub_72722(pc) move.b d6,d1 move.b #-$60,d0 jsr sub_72722(pc)

locret_71E48: rts

===========================================================================

loc_71E4A: bset #1,(a5) rts

End of function sub_71E18
===========================================================================

loc_71E50: ; XREF: sub_71B4C bmi.s loc_71E94 cmpi.b #2,3(a6) beq.w loc_71EFE move.b #2,3(a6) moveq #2,d3 move.b #-$4C,d0 moveq #0,d1

loc_71E6A: jsr sub_7272E(pc) jsr sub_72764(pc) addq.b #1,d0 dbf d3,loc_71E6A

moveq #2,d3 moveq #$28,d0

loc_71E7C: move.b d3,d1 jsr sub_7272E(pc) addq.b #4,d1 jsr sub_7272E(pc) dbf d3,loc_71E7C

jsr sub_729B6(pc) bra.w loc_71C44

===========================================================================

loc_71E94: ; XREF: loc_71E50 clr.b 3(a6) moveq #$30,d3 lea $40(a6),a5 moveq #6,d4

loc_71EA0: btst #7,(a5) beq.s loc_71EB8 btst #2,(a5) bne.s loc_71EB8 move.b #-$4C,d0 move.b $A(a5),d1 jsr sub_72722(pc)

loc_71EB8: adda.w d3,a5 dbf d4,loc_71EA0

lea $220(a6),a5 moveq #2,d4

loc_71EC4: btst #7,(a5) beq.s loc_71EDC btst #2,(a5) bne.s loc_71EDC move.b #-$4C,d0 move.b $A(a5),d1 jsr sub_72722(pc)

loc_71EDC: adda.w d3,a5 dbf d4,loc_71EC4

lea $340(a6),a5 btst #7,(a5) beq.s loc_71EFE btst #2,(a5) bne.s loc_71EFE move.b #-$4C,d0 move.b $A(a5),d1 jsr sub_72722(pc)

loc_71EFE: bra.w loc_71C44

---------------------------------------------------------------------------
Subroutine to play a sound or music track
---------------------------------------------------------------------------
||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


Sound_Play: ; XREF: sub_71B4C movea.l (Go_SoundTypes).l,a0 lea $A(a6),a1 ; load music track number move.b 0(a6),d3 moveq #2,d4

loc_71F12: move.b (a1),d0 ; move track number to d0 move.b d0,d1 clr.b (a1)+ subi.b #$81,d0 bcs.s loc_71F3E cmpi.b #$80,9(a6) beq.s loc_71F2C move.b d1,$A(a6) bra.s loc_71F3E

===========================================================================

loc_71F2C: andi.w #$7F,d0 move.b (a0,d0.w),d2 cmp.b d3,d2 bcs.s loc_71F3E move.b d2,d3 move.b d1,9(a6) ; set music flag

loc_71F3E: dbf d4,loc_71F12

tst.b d3 bmi.s locret_71F4A move.b d3,0(a6)

locret_71F4A: rts

End of function Sound_Play


||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


Sound_ChkValue: ; XREF: sub_71B4C moveq #0,d7 move.b 9(a6),d7 beq.w Sound_E4 bpl.s locret_71F8C move.b #$80,9(a6) ; reset music flag cmpi.b #$9F,d7 bls.w Sound_81to9F ; music $81-$9F cmpi.b #$A0,d7 bcs.w locret_71F8C cmpi.b #$CF,d7 bls.w Sound_A0toCF ; sound $A0-$CF cmpi.b #$D0,d7 bcs.w locret_71F8C cmpi.b #$E0,d7 bcs.w Sound_D0toDF ; sound $D0-$DF cmpi.b #$E4,d7 bls.s Sound_E0toE4 ; sound $E0-$E4

locret_71F8C: rts

===========================================================================

Sound_E0toE4: ; XREF: Sound_ChkValue subi.b #$E0,d7 lsl.w #2,d7 jmp Sound_ExIndex(pc,d7.w)

===========================================================================

Sound_ExIndex: bra.w Sound_E0

===========================================================================

bra.w Sound_E1

===========================================================================

bra.w Sound_E2

===========================================================================

bra.w Sound_E3

===========================================================================

bra.w Sound_E4

===========================================================================
---------------------------------------------------------------------------
Play "Say-gaa" PCM sound
---------------------------------------------------------------------------

Sound_E1: ; XREF: Sound_ExIndex move.b #$88,($A01FFF).l move.w #0,($A11100).l ; start the Z80 move.w #$11,d1

loc_71FC0: move.w #-1,d0

loc_71FC4: nop dbf d0,loc_71FC4

dbf d1,loc_71FC0

addq.w #4,sp rts

===========================================================================
---------------------------------------------------------------------------
Play music track $81-$9F
---------------------------------------------------------------------------

Sound_81to9F: ; XREF: Sound_ChkValue cmpi.b #$88,d7 ; is "extra life" music played? bne.s loc_72024 ; if not, branch tst.b $27(a6) bne.w loc_721B6 lea $40(a6),a5 moveq #9,d0

loc_71FE6: bclr #2,(a5) adda.w #$30,a5 dbf d0,loc_71FE6

lea $220(a6),a5 moveq #5,d0

loc_71FF8: bclr #7,(a5) adda.w #$30,a5 dbf d0,loc_71FF8 clr.b 0(a6) movea.l a6,a0 lea $3A0(a6),a1 move.w #$87,d0

loc_72012: move.l (a0)+,(a1)+ dbf d0,loc_72012

move.b #$80,$27(a6) clr.b 0(a6) bra.s loc_7202C

===========================================================================

loc_72024: clr.b $27(a6) clr.b $26(a6)

loc_7202C: jsr sub_725CA(pc) movea.l (off_719A0).l,a4 subi.b #$81,d7 move.b (a4,d7.w),$29(a6) movea.l (Go_MusicIndex).l,a4 lsl.w #2,d7 movea.l (a4,d7.w),a4 moveq #0,d0 move.w (a4),d0 add.l a4,d0 move.l d0,$18(a6) move.b 5(a4),d0 move.b d0,$28(a6) tst.b $2A(a6) beq.s loc_72068 move.b $29(a6),d0

loc_72068: move.b d0,2(a6) move.b d0,1(a6) moveq #0,d1 movea.l a4,a3 addq.w #6,a4 moveq #0,d7 move.b 2(a3),d7 beq.w loc_72114 subq.b #1,d7 move.b #-$40,d1 move.b 4(a3),d4 moveq #$30,d6 move.b #1,d5 lea $40(a6),a1 lea byte_721BA(pc),a2

loc_72098: bset #7,(a1) move.b (a2)+,1(a1) move.b d4,2(a1) move.b d6,$D(a1) move.b d1,$A(a1) move.b d5,$E(a1) moveq #0,d0 move.w (a4)+,d0 add.l a3,d0 move.l d0,4(a1) move.w (a4)+,8(a1) adda.w d6,a1 dbf d7,loc_72098 cmpi.b #7,2(a3) bne.s loc_720D8 moveq #$2B,d0 moveq #0,d1 jsr sub_7272E(pc) bra.w loc_72114

===========================================================================

loc_720D8: moveq #$28,d0 moveq #6,d1 jsr sub_7272E(pc) move.b #$42,d0 moveq #$7F,d1 jsr sub_72764(pc) move.b #$4A,d0 moveq #$7F,d1 jsr sub_72764(pc) move.b #$46,d0 moveq #$7F,d1 jsr sub_72764(pc) move.b #$4E,d0 moveq #$7F,d1 jsr sub_72764(pc) move.b #-$4A,d0 move.b #-$40,d1 jsr sub_72764(pc)

loc_72114: moveq #0,d7 move.b 3(a3),d7 beq.s loc_72154 subq.b #1,d7 lea $190(a6),a1 lea byte_721C2(pc),a2

loc_72126: bset #7,(a1) move.b (a2)+,1(a1) move.b d4,2(a1) move.b d6,$D(a1) move.b d5,$E(a1) moveq #0,d0 move.w (a4)+,d0 add.l a3,d0 move.l d0,4(a1) move.w (a4)+,8(a1) move.b (a4)+,d0 move.b (a4)+,$B(a1) adda.w d6,a1 dbf d7,loc_72126

loc_72154: lea $220(a6),a1 moveq #5,d7

loc_7215A: tst.b (a1) bpl.w loc_7217C moveq #0,d0 move.b 1(a1),d0 bmi.s loc_7216E subq.b #2,d0 lsl.b #2,d0 bra.s loc_72170

===========================================================================

loc_7216E: lsr.b #3,d0

loc_72170: lea dword_722CC(pc),a0 movea.l (a0,d0.w),a0 bset #2,(a0)

loc_7217C: adda.w d6,a1 dbf d7,loc_7215A

tst.w $340(a6) bpl.s loc_7218E bset #2,$100(a6)

loc_7218E: tst.w $370(a6) bpl.s loc_7219A bset #2,$1F0(a6)

loc_7219A: lea $70(a6),a5 moveq #5,d4

loc_721A0: jsr sub_726FE(pc) adda.w d6,a5 dbf d4,loc_721A0 moveq #2,d4

loc_721AC: jsr sub_729A0(pc) adda.w d6,a5 dbf d4,loc_721AC

loc_721B6: addq.w #4,sp rts

===========================================================================

byte_721BA: dc.b 6, 0, 1, 2, 4, 5, 6, 0 align 2 byte_721C2: dc.b $80, $A0, $C0, 0 align 2

===========================================================================
---------------------------------------------------------------------------
Play normal sound effect
---------------------------------------------------------------------------

Sound_A0toCF: ; XREF: Sound_ChkValue tst.b $27(a6) bne.w loc_722C6 tst.b 4(a6) bne.w loc_722C6 tst.b $24(a6) bne.w loc_722C6 cmpi.b #$B5,d7 ; is ring sound effect played? bne.s Sound_notB5 ; if not, branch tst.b $2B(a6) bne.s loc_721EE move.b #$CE,d7 ; play ring sound in left speaker

loc_721EE: bchg #0,$2B(a6) ; change speaker

Sound_notB5: cmpi.b #$A7,d7 ; is "pushing" sound played? bne.s Sound_notA7 ; if not, branch tst.b $2C(a6) bne.w locret_722C4 move.b #$80,$2C(a6)

Sound_notA7: movea.l (Go_SoundIndex).l,a0 subi.b #$A0,d7 lsl.w #2,d7 movea.l (a0,d7.w),a3 movea.l a3,a1 moveq #0,d1 move.w (a1)+,d1 add.l a3,d1 move.b (a1)+,d5 move.b (a1)+,d7 subq.b #1,d7 moveq #$30,d6

loc_72228: moveq #0,d3 move.b 1(a1),d3 move.b d3,d4 bmi.s loc_72244 subq.w #2,d3 lsl.w #2,d3 lea dword_722CC(pc),a5 movea.l (a5,d3.w),a5 bset #2,(a5) bra.s loc_7226E

===========================================================================

loc_72244: lsr.w #3,d3 lea dword_722CC(pc),a5 movea.l (a5,d3.w),a5 bset #2,(a5) cmpi.b #$C0,d4 bne.s loc_7226E move.b d4,d0 ori.b #$1F,d0 move.b d0,($C00011).l bchg #5,d0 move.b d0,($C00011).l

loc_7226E: movea.l dword_722EC(pc,d3.w),a5 movea.l a5,a2 moveq #$B,d0

loc_72276: clr.l (a2)+ dbf d0,loc_72276

move.w (a1)+,(a5) move.b d5,2(a5) moveq #0,d0 move.w (a1)+,d0 add.l a3,d0 move.l d0,4(a5) move.w (a1)+,8(a5) move.b #1,$E(a5) move.b d6,$D(a5) tst.b d4 bmi.s loc_722A8 move.b #$C0,$A(a5) move.l d1,$20(a5)

loc_722A8: dbf d7,loc_72228

tst.b $250(a6) bpl.s loc_722B8 bset #2,$340(a6)

loc_722B8: tst.b $310(a6) bpl.s locret_722C4 bset #2,$370(a6)

locret_722C4: rts

===========================================================================

loc_722C6: clr.b 0(a6) rts

===========================================================================

dword_722CC: dc.l $FFF0D0 dc.l 0 dc.l $FFF100 dc.l $FFF130 dc.l $FFF190 dc.l $FFF1C0 dc.l $FFF1F0 dc.l $FFF1F0 dword_722EC: dc.l $FFF220 dc.l 0 dc.l $FFF250 dc.l $FFF280 dc.l $FFF2B0 dc.l $FFF2E0 dc.l $FFF310 dc.l $FFF310

===========================================================================
---------------------------------------------------------------------------
Play GHZ waterfall sound
---------------------------------------------------------------------------

Sound_D0toDF: ; XREF: Sound_ChkValue tst.b $27(a6) bne.w locret_723C6 tst.b 4(a6) bne.w locret_723C6 tst.b $24(a6) bne.w locret_723C6 movea.l (Go_SoundD0).l,a0 subi.b #$D0,d7 lsl.w #2,d7 movea.l (a0,d7.w),a3 movea.l a3,a1 moveq #0,d0 move.w (a1)+,d0 add.l a3,d0 move.l d0,$20(a6) move.b (a1)+,d5 move.b (a1)+,d7 subq.b #1,d7 moveq #$30,d6

loc_72348: move.b 1(a1),d4 bmi.s loc_7235A bset #2,$100(a6) lea $340(a6),a5 bra.s loc_72364

===========================================================================

loc_7235A: bset #2,$1F0(a6) lea $370(a6),a5

loc_72364: movea.l a5,a2 moveq #$B,d0

loc_72368: clr.l (a2)+ dbf d0,loc_72368

move.w (a1)+,(a5) move.b d5,2(a5) moveq #0,d0 move.w (a1)+,d0 add.l a3,d0 move.l d0,4(a5) move.w (a1)+,8(a5) move.b #1,$E(a5) move.b d6,$D(a5) tst.b d4 bmi.s loc_72396 move.b #$C0,$A(a5)

loc_72396: dbf d7,loc_72348

tst.b $250(a6) bpl.s loc_723A6 bset #2,$340(a6)

loc_723A6: tst.b $310(a6) bpl.s locret_723C6 bset #2,$370(a6) ori.b #$1F,d4 move.b d4,($C00011).l bchg #5,d4 move.b d4,($C00011).l

locret_723C6: rts

End of function Sound_ChkValue
===========================================================================

dc.l $FFF100 dc.l $FFF1F0 dc.l $FFF250 dc.l $FFF310 dc.l $FFF340 dc.l $FFF370

||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


Snd_FadeOut1: ; XREF: Sound_E0 clr.b 0(a6) lea $220(a6),a5 moveq #5,d7

loc_723EA: tst.b (a5) bpl.w loc_72472 bclr #7,(a5) moveq #0,d3 move.b 1(a5),d3 bmi.s loc_7243C jsr sub_726FE(pc) cmpi.b #4,d3 bne.s loc_72416 tst.b $340(a6) bpl.s loc_72416 lea $340(a6),a5 movea.l $20(a6),a1 bra.s loc_72428

===========================================================================

loc_72416: subq.b #2,d3 lsl.b #2,d3 lea dword_722CC(pc),a0 movea.l a5,a3 movea.l (a0,d3.w),a5 movea.l $18(a6),a1

loc_72428: bclr #2,(a5) bset #1,(a5) move.b $B(a5),d0 jsr sub_72C4E(pc) movea.l a3,a5 bra.s loc_72472

===========================================================================

loc_7243C: jsr sub_729A0(pc) lea $370(a6),a0 cmpi.b #$E0,d3 beq.s loc_7245A cmpi.b #$C0,d3 beq.s loc_7245A lsr.b #3,d3 lea dword_722CC(pc),a0 movea.l (a0,d3.w),a0

loc_7245A: bclr #2,(a0) bset #1,(a0) cmpi.b #$E0,1(a0) bne.s loc_72472 move.b $1F(a0),($C00011).l

loc_72472: adda.w #$30,a5 dbf d7,loc_723EA

rts

End of function Snd_FadeOut1


||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


Snd_FadeOut2: ; XREF: Sound_E0 lea $340(a6),a5 tst.b (a5) bpl.s loc_724AE bclr #7,(a5) btst #2,(a5) bne.s loc_724AE jsr loc_7270A(pc) lea $100(a6),a5 bclr #2,(a5) bset #1,(a5) tst.b (a5) bpl.s loc_724AE movea.l $18(a6),a1 move.b $B(a5),d0 jsr sub_72C4E(pc)

loc_724AE: lea $370(a6),a5 tst.b (a5) bpl.s locret_724E4 bclr #7,(a5) btst #2,(a5) bne.s locret_724E4 jsr loc_729A6(pc) lea $1F0(a6),a5 bclr #2,(a5) bset #1,(a5) tst.b (a5) bpl.s locret_724E4 cmpi.b #-$20,1(a5) bne.s locret_724E4 move.b $1F(a5),($C00011).l

locret_724E4: rts

End of function Snd_FadeOut2
===========================================================================
---------------------------------------------------------------------------
Fade out music
---------------------------------------------------------------------------

Sound_E0: ; XREF: Sound_ExIndex jsr Snd_FadeOut1(pc) jsr Snd_FadeOut2(pc) move.b #3,6(a6) move.b #$28,4(a6) clr.b $40(a6) clr.b $2A(a6) rts

||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


sub_72504: ; XREF: sub_71B4C move.b 6(a6),d0 beq.s loc_72510 subq.b #1,6(a6) rts

===========================================================================

loc_72510: subq.b #1,4(a6) beq.w Sound_E4 move.b #3,6(a6) lea $70(a6),a5 moveq #5,d7

loc_72524: tst.b (a5) bpl.s loc_72538 addq.b #1,9(a5) bpl.s loc_72534 bclr #7,(a5) bra.s loc_72538

===========================================================================

loc_72534: jsr sub_72CB4(pc)

loc_72538: adda.w #$30,a5 dbf d7,loc_72524

moveq #2,d7

loc_72542: tst.b (a5) bpl.s loc_72560 addq.b #1,9(a5) cmpi.b #$10,9(a5) bcs.s loc_72558 bclr #7,(a5) bra.s loc_72560

===========================================================================

loc_72558: move.b 9(a5),d6 jsr sub_7296A(pc)

loc_72560: adda.w #$30,a5 dbf d7,loc_72542

rts

End of function sub_72504


||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


sub_7256A: ; XREF: Sound_E4; sub_725CA moveq #2,d3 moveq #$28,d0

loc_7256E: move.b d3,d1 jsr sub_7272E(pc) addq.b #4,d1 jsr sub_7272E(pc) dbf d3,loc_7256E

moveq #$40,d0 moveq #$7F,d1 moveq #2,d4

loc_72584: moveq #3,d3

loc_72586: jsr sub_7272E(pc) jsr sub_72764(pc) addq.w #4,d0 dbf d3,loc_72586

subi.b #$F,d0 dbf d4,loc_72584

rts

End of function sub_7256A
===========================================================================
---------------------------------------------------------------------------
Stop music
---------------------------------------------------------------------------

Sound_E4: ; XREF: Sound_ChkValue; Sound_ExIndex; sub_72504 moveq #$2B,d0 move.b #$80,d1 jsr sub_7272E(pc) moveq #$27,d0 moveq #0,d1 jsr sub_7272E(pc) movea.l a6,a0 move.w #$E3,d0

loc_725B6: clr.l (a0)+ dbf d0,loc_725B6

move.b #$80,9(a6) ; set music to $80 (silence) jsr sub_7256A(pc) bra.w sub_729B6

||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


sub_725CA: ; XREF: Sound_ChkValue movea.l a6,a0 move.b 0(a6),d1 move.b $27(a6),d2 move.b $2A(a6),d3 move.b $26(a6),d4 move.w $A(a6),d5 move.w #$87,d0

loc_725E4: clr.l (a0)+ dbf d0,loc_725E4

move.b d1,0(a6) move.b d2,$27(a6) move.b d3,$2A(a6) move.b d4,$26(a6) move.w d5,$A(a6) move.b #$80,9(a6) jsr sub_7256A(pc) bra.w sub_729B6

End of function sub_725CA


||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


sub_7260C: ; XREF: sub_71B4C move.b 2(a6),1(a6) lea $4E(a6),a0 moveq #$30,d0 moveq #9,d1

loc_7261A: addq.b #1,(a0) adda.w d0,a0 dbf d1,loc_7261A

rts

End of function sub_7260C
===========================================================================
---------------------------------------------------------------------------
Speed up music
---------------------------------------------------------------------------

Sound_E2: ; XREF: Sound_ExIndex tst.b $27(a6) bne.s loc_7263E move.b $29(a6),2(a6) move.b $29(a6),1(a6) move.b #$80,$2A(a6) rts

===========================================================================

loc_7263E: move.b $3C9(a6),$3A2(a6) move.b $3C9(a6),$3A1(a6) move.b #$80,$3CA(a6) rts

===========================================================================
---------------------------------------------------------------------------
Change music back to normal speed
---------------------------------------------------------------------------

Sound_E3: ; XREF: Sound_ExIndex tst.b $27(a6) bne.s loc_7266A move.b $28(a6),2(a6) move.b $28(a6),1(a6) clr.b $2A(a6) rts

===========================================================================

loc_7266A: move.b $3C8(a6),$3A2(a6) move.b $3C8(a6),$3A1(a6) clr.b $3CA(a6) rts

||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


sub_7267C: ; XREF: sub_71B4C tst.b $25(a6) beq.s loc_72688 subq.b #1,$25(a6) rts

===========================================================================

loc_72688: tst.b $26(a6) beq.s loc_726D6 subq.b #1,$26(a6) move.b #2,$25(a6) lea $70(a6),a5 moveq #5,d7

loc_7269E: tst.b (a5) bpl.s loc_726AA subq.b #1,9(a5) jsr sub_72CB4(pc)

loc_726AA: adda.w #$30,a5 dbf d7,loc_7269E moveq #2,d7

loc_726B4: tst.b (a5) bpl.s loc_726CC subq.b #1,9(a5) move.b 9(a5),d6 cmpi.b #$10,d6 bcs.s loc_726C8 moveq #$F,d6

loc_726C8: jsr sub_7296A(pc)

loc_726CC: adda.w #$30,a5 dbf d7,loc_726B4 rts

===========================================================================

loc_726D6: bclr #2,$40(a6) clr.b $24(a6) rts

End of function sub_7267C
===========================================================================

loc_726E2: ; XREF: sub_71CCA btst #1,(a5) bne.s locret_726FC btst #2,(a5) bne.s locret_726FC moveq #$28,d0 move.b 1(a5),d1 ori.b #-$10,d1 bra.w sub_7272E

===========================================================================

locret_726FC: rts

||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


sub_726FE: ; XREF: sub_71CEC; sub_71D9E; Sound_ChkValue; Snd_FadeOut1 btst #4,(a5) bne.s locret_72714 btst #2,(a5) bne.s locret_72714

loc_7270A: ; XREF: Snd_FadeOut2 moveq #$28,d0 move.b 1(a5),d1 bra.w sub_7272E

===========================================================================

locret_72714: rts

End of function sub_726FE
===========================================================================

loc_72716: ; XREF: sub_72A5A btst #2,(a5) bne.s locret_72720 bra.w sub_72722

===========================================================================

locret_72720: rts

||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


sub_72722: ; XREF: sub_71E18; sub_72C4E; sub_72CB4 btst #2,1(a5) bne.s loc_7275A add.b 1(a5),d0

End of function sub_72722


||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


sub_7272E: ; XREF: loc_71E6A move.b ($A04000).l,d2 btst #7,d2 bne.s sub_7272E move.b d0,($A04000).l nop nop nop

loc_72746: move.b ($A04000).l,d2 btst #7,d2 bne.s loc_72746

move.b d1,($A04001).l rts

End of function sub_7272E
===========================================================================

loc_7275A: ; XREF: sub_72722 move.b 1(a5),d2 bclr #2,d2 add.b d2,d0

||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


sub_72764: ; XREF: loc_71E6A; Sound_ChkValue; sub_7256A; sub_72764 move.b ($A04000).l,d2 btst #7,d2 bne.s sub_72764 move.b d0,($A04002).l nop nop nop

loc_7277C: move.b ($A04000).l,d2 btst #7,d2 bne.s loc_7277C

move.b d1,($A04003).l rts

End of function sub_72764
===========================================================================

word_72790: dc.w $25E, $284, $2AB, $2D3, $2FE, $32D, $35C, $38F, $3C5 dc.w $3FF, $43C, $47C, $A5E, $A84, $AAB, $AD3, $AFE, $B2D dc.w $B5C, $B8F, $BC5, $BFF, $C3C, $C7C, $125E, $1284 dc.w $12AB, $12D3, $12FE, $132D, $135C, $138F, $13C5, $13FF dc.w $143C, $147C, $1A5E, $1A84, $1AAB, $1AD3, $1AFE, $1B2D dc.w $1B5C, $1B8F, $1BC5, $1BFF, $1C3C, $1C7C, $225E, $2284 dc.w $22AB, $22D3, $22FE, $232D, $235C, $238F, $23C5, $23FF dc.w $243C, $247C, $2A5E, $2A84, $2AAB, $2AD3, $2AFE, $2B2D dc.w $2B5C, $2B8F, $2BC5, $2BFF, $2C3C, $2C7C, $325E, $3284 dc.w $32AB, $32D3, $32FE, $332D, $335C, $338F, $33C5, $33FF dc.w $343C, $347C, $3A5E, $3A84, $3AAB, $3AD3, $3AFE, $3B2D dc.w $3B5C, $3B8F, $3BC5, $3BFF, $3C3C, $3C7C

||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


sub_72850: ; XREF: sub_71B4C subq.b #1,$E(a5) bne.s loc_72866 bclr #4,(a5) jsr sub_72878(pc) jsr sub_728DC(pc) bra.w loc_7292E

===========================================================================

loc_72866: jsr sub_71D9E(pc) jsr sub_72926(pc) jsr sub_71DC6(pc) jsr sub_728E2(pc) rts

End of function sub_72850


||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


sub_72878: ; XREF: sub_72850 bclr #1,(a5) movea.l 4(a5),a4

loc_72880: moveq #0,d5 move.b (a4)+,d5 cmpi.b #$E0,d5 bcs.s loc_72890 jsr sub_72A5A(pc) bra.s loc_72880

===========================================================================

loc_72890: tst.b d5 bpl.s loc_728A4 jsr sub_728AC(pc) move.b (a4)+,d5 tst.b d5 bpl.s loc_728A4 subq.w #1,a4 bra.w sub_71D60

===========================================================================

loc_728A4: jsr sub_71D40(pc) bra.w sub_71D60

End of function sub_72878


||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


sub_728AC: ; XREF: sub_72878 subi.b #$81,d5 bcs.s loc_728CA add.b 8(a5),d5 andi.w #$7F,d5 lsl.w #1,d5 lea word_729CE(pc),a0 move.w (a0,d5.w),$10(a5) bra.w sub_71D60

===========================================================================

loc_728CA: bset #1,(a5) move.w #-1,$10(a5) jsr sub_71D60(pc) bra.w sub_729A0

End of function sub_728AC


||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


sub_728DC: ; XREF: sub_72850 move.w $10(a5),d6 bmi.s loc_72920

End of function sub_728DC


||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


sub_728E2: ; XREF: sub_72850 move.b $1E(a5),d0 ext.w d0 add.w d0,d6 btst #2,(a5) bne.s locret_7291E btst #1,(a5) bne.s locret_7291E move.b 1(a5),d0 cmpi.b #$E0,d0 bne.s loc_72904 move.b #$C0,d0

loc_72904: move.w d6,d1 andi.b #$F,d1 or.b d1,d0 lsr.w #4,d6 andi.b #$3F,d6 move.b d0,($C00011).l move.b d6,($C00011).l

locret_7291E: rts

End of function sub_728E2
===========================================================================

loc_72920: ; XREF: sub_728DC bset #1,(a5) rts

||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


sub_72926: ; XREF: sub_72850 tst.b $B(a5) beq.w locret_7298A

loc_7292E: ; XREF: sub_72850 move.b 9(a5),d6 moveq #0,d0 move.b $B(a5),d0 beq.s sub_7296A movea.l (Go_PSGIndex).l,a0 subq.w #1,d0 lsl.w #2,d0 movea.l (a0,d0.w),a0 move.b $C(a5),d0 move.b (a0,d0.w),d0 addq.b #1,$C(a5) btst #7,d0 beq.s loc_72960 cmpi.b #$80,d0 beq.s loc_7299A

loc_72960: add.w d0,d6 cmpi.b #$10,d6 bcs.s sub_7296A moveq #$F,d6

End of function sub_72926


||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


sub_7296A: ; XREF: sub_72504; sub_7267C; sub_72926 btst #1,(a5) bne.s locret_7298A btst #2,(a5) bne.s locret_7298A btst #4,(a5) bne.s loc_7298C

loc_7297C: or.b 1(a5),d6 addi.b #$10,d6 move.b d6,($C00011).l

locret_7298A: rts

===========================================================================

loc_7298C: tst.b $13(a5) beq.s loc_7297C tst.b $12(a5) bne.s loc_7297C rts

End of function sub_7296A
===========================================================================

loc_7299A: ; XREF: sub_72926 subq.b #1,$C(a5) rts

||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


sub_729A0: ; XREF: sub_71D9E; Sound_ChkValue; Snd_FadeOut1; sub_728AC btst #2,(a5) bne.s locret_729B4

loc_729A6: ; XREF: Snd_FadeOut2 move.b 1(a5),d0 ori.b #$1F,d0 move.b d0,($C00011).l

locret_729B4: rts

End of function sub_729A0


||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


sub_729B6: ; XREF: loc_71E7C lea ($C00011).l,a0 move.b #$9F,(a0) move.b #$BF,(a0) move.b #$DF,(a0) move.b #$FF,(a0) rts

End of function sub_729B6
===========================================================================

word_729CE: dc.w $356, $326, $2F9, $2CE, $2A5, $280, $25C, $23A, $21A dc.w $1FB, $1DF, $1C4, $1AB, $193, $17D, $167, $153, $140 dc.w $12E, $11D, $10D, $FE, $EF, $E2, $D6, $C9, $BE, $B4 dc.w $A9, $A0, $97, $8F, $87, $7F, $78, $71, $6B, $65 dc.w $5F, $5A, $55, $50, $4B, $47, $43, $40, $3C, $39 dc.w $36, $33, $30, $2D, $2B, $28, $26, $24, $22, $20 dc.w $1F, $1D, $1B, $1A, $18, $17, $16, $15, $13, $12 dc.w $11, 0

||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


sub_72A5A: ; XREF: sub_71C4E; sub_71CEC; sub_72878 subi.w #$E0,d5 lsl.w #2,d5 jmp loc_72A64(pc,d5.w)

End of function sub_72A5A
===========================================================================

loc_72A64: bra.w loc_72ACC

===========================================================================

bra.w loc_72AEC

===========================================================================

bra.w loc_72AF2

===========================================================================

bra.w loc_72AF8

===========================================================================

bra.w loc_72B14

===========================================================================

bra.w loc_72B9E

===========================================================================

bra.w loc_72BA4

===========================================================================

bra.w loc_72BAE

===========================================================================

bra.w loc_72BB4

===========================================================================

bra.w loc_72BBE

===========================================================================

bra.w loc_72BC6

===========================================================================

bra.w loc_72BD0

===========================================================================

bra.w loc_72BE6

===========================================================================

bra.w loc_72BEE

===========================================================================

bra.w loc_72BF4

===========================================================================

bra.w loc_72C26

===========================================================================

bra.w loc_72D30

===========================================================================

bra.w loc_72D52

===========================================================================

bra.w loc_72D58

===========================================================================

bra.w loc_72E06

===========================================================================

bra.w loc_72E20

===========================================================================

bra.w loc_72E26

===========================================================================

bra.w loc_72E2C

===========================================================================

bra.w loc_72E38

===========================================================================

bra.w loc_72E52

===========================================================================

bra.w loc_72E64

===========================================================================

loc_72ACC: ; XREF: loc_72A64 move.b (a4)+,d1 tst.b 1(a5) bmi.s locret_72AEA move.b $A(a5),d0 andi.b #$37,d0 or.b d0,d1 move.b d1,$A(a5) move.b #$B4,d0 bra.w loc_72716

===========================================================================

locret_72AEA: rts

===========================================================================

loc_72AEC: ; XREF: loc_72A64 move.b (a4)+,$1E(a5) rts

===========================================================================

loc_72AF2: ; XREF: loc_72A64 move.b (a4)+,7(a6) rts

===========================================================================

loc_72AF8: ; XREF: loc_72A64 moveq #0,d0 move.b $D(a5),d0 movea.l (a5,d0.w),a4 move.l #0,(a5,d0.w) addq.w #2,a4 addq.b #4,d0 move.b d0,$D(a5) rts

===========================================================================

loc_72B14: ; XREF: loc_72A64 movea.l a6,a0 lea $3A0(a6),a1 move.w #$87,d0

loc_72B1E: move.l (a1)+,(a0)+ dbf d0,loc_72B1E

bset #2,$40(a6) movea.l a5,a3 move.b #$28,d6 sub.b $26(a6),d6 moveq #5,d7 lea $70(a6),a5

loc_72B3A: btst #7,(a5) beq.s loc_72B5C bset #1,(a5) add.b d6,9(a5) btst #2,(a5) bne.s loc_72B5C moveq #0,d0 move.b $B(a5),d0 movea.l $18(a6),a1 jsr sub_72C4E(pc)

loc_72B5C: adda.w #$30,a5 dbf d7,loc_72B3A

moveq #2,d7

loc_72B66: btst #7,(a5) beq.s loc_72B78 bset #1,(a5) jsr sub_729A0(pc) add.b d6,9(a5)

loc_72B78: adda.w #$30,a5 dbf d7,loc_72B66 movea.l a3,a5 move.b #$80,$24(a6) move.b #$28,$26(a6) clr.b $27(a6) move.w #0,($A11100).l addq.w #8,sp rts

===========================================================================

loc_72B9E: ; XREF: loc_72A64 move.b (a4)+,2(a5) rts

===========================================================================

loc_72BA4: ; XREF: loc_72A64 move.b (a4)+,d0 add.b d0,9(a5) bra.w sub_72CB4

===========================================================================

loc_72BAE: ; XREF: loc_72A64 bset #4,(a5) rts

===========================================================================

loc_72BB4: ; XREF: loc_72A64 move.b (a4),$12(a5) move.b (a4)+,$13(a5) rts

===========================================================================

loc_72BBE: ; XREF: loc_72A64 move.b (a4)+,d0 add.b d0,8(a5) rts

===========================================================================

loc_72BC6: ; XREF: loc_72A64 move.b (a4),2(a6) move.b (a4)+,1(a6) rts

===========================================================================

loc_72BD0: ; XREF: loc_72A64 lea $40(a6),a0 move.b (a4)+,d0 moveq #$30,d1 moveq #9,d2

loc_72BDA: move.b d0,2(a0) adda.w d1,a0 dbf d2,loc_72BDA

rts

===========================================================================

loc_72BE6: ; XREF: loc_72A64 move.b (a4)+,d0 add.b d0,9(a5) rts

===========================================================================

loc_72BEE: ; XREF: loc_72A64 clr.b $2C(a6) rts

===========================================================================

loc_72BF4: ; XREF: loc_72A64 bclr #7,(a5) bclr #4,(a5) jsr sub_726FE(pc) tst.b $250(a6) bmi.s loc_72C22 movea.l a5,a3 lea $100(a6),a5 movea.l $18(a6),a1 bclr #2,(a5) bset #1,(a5) move.b $B(a5),d0 jsr sub_72C4E(pc) movea.l a3,a5

loc_72C22: addq.w #8,sp rts

===========================================================================

loc_72C26: ; XREF: loc_72A64 moveq #0,d0 move.b (a4)+,d0 move.b d0,$B(a5) btst #2,(a5) bne.w locret_72CAA movea.l $18(a6),a1 tst.b $E(a6) beq.s sub_72C4E movea.l $20(a5),a1 tst.b $E(a6) bmi.s sub_72C4E movea.l $20(a6),a1

||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


sub_72C4E: ; XREF: Snd_FadeOut1; et al subq.w #1,d0 bmi.s loc_72C5C move.w #$19,d1

loc_72C56: adda.w d1,a1 dbf d0,loc_72C56

loc_72C5C: move.b (a1)+,d1 move.b d1,$1F(a5) move.b d1,d4 move.b #$B0,d0 jsr sub_72722(pc) lea byte_72D18(pc),a2 moveq #$13,d3

loc_72C72: move.b (a2)+,d0 move.b (a1)+,d1 jsr sub_72722(pc) dbf d3,loc_72C72 moveq #3,d5 andi.w #7,d4 move.b byte_72CAC(pc,d4.w),d4 move.b 9(a5),d3

loc_72C8C: move.b (a2)+,d0 move.b (a1)+,d1 lsr.b #1,d4 bcc.s loc_72C96 add.b d3,d1

loc_72C96: jsr sub_72722(pc) dbf d5,loc_72C8C move.b #$B4,d0 move.b $A(a5),d1 jsr sub_72722(pc)

locret_72CAA: rts

End of function sub_72C4E
===========================================================================

byte_72CAC: dc.b 8, 8, 8, 8, $A, $E, $E, $F

||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||


sub_72CB4: ; XREF: sub_72504; sub_7267C; loc_72BA4 btst #2,(a5) bne.s locret_72D16 moveq #0,d0 move.b $B(a5),d0 movea.l $18(a6),a1 tst.b $E(a6) beq.s loc_72CD8 movea.l $20(a6),a1 tst.b $E(a6) bmi.s loc_72CD8 movea.l $20(a6),a1

loc_72CD8: subq.w #1,d0 bmi.s loc_72CE6 move.w #$19,d1

loc_72CE0: adda.w d1,a1 dbf d0,loc_72CE0

loc_72CE6: adda.w #$15,a1 lea byte_72D2C(pc),a2 move.b $1F(a5),d0 andi.w #7,d0 move.b byte_72CAC(pc,d0.w),d4 move.b 9(a5),d3 bmi.s locret_72D16 moveq #3,d5

loc_72D02: move.b (a2)+,d0 move.b (a1)+,d1 lsr.b #1,d4 bcc.s loc_72D12 add.b d3,d1 bcs.s loc_72D12 jsr sub_72722(pc)

loc_72D12: dbf d5,loc_72D02

locret_72D16: rts

End of function sub_72CB4
===========================================================================

byte_72D18: dc.b $30, $38, $34, $3C, $50, $58, $54, $5C, $60, $68 dc.b $64, $6C, $70, $78, $74, $7C, $80, $88, $84, $8C byte_72D2C: dc.b $40, $48, $44, $4C

===========================================================================

loc_72D30: ; XREF: loc_72A64 bset #3,(a5) move.l a4,$14(a5) move.b (a4)+,$18(a5) move.b (a4)+,$19(a5) move.b (a4)+,$1A(a5) move.b (a4)+,d0 lsr.b #1,d0 move.b d0,$1B(a5) clr.w $1C(a5) rts

===========================================================================

loc_72D52: ; XREF: loc_72A64 bset #3,(a5) rts

===========================================================================

loc_72D58: ; XREF: loc_72A64 bclr #7,(a5) bclr #4,(a5) tst.b 1(a5) bmi.s loc_72D74 tst.b 8(a6) bmi.w loc_72E02 jsr sub_726FE(pc) bra.s loc_72D78

===========================================================================

loc_72D74: jsr sub_729A0(pc)

loc_72D78: tst.b $E(a6) bpl.w loc_72E02 clr.b 0(a6) moveq #0,d0 move.b 1(a5),d0 bmi.s loc_72DCC lea dword_722CC(pc),a0 movea.l a5,a3 cmpi.b #4,d0 bne.s loc_72DA8 tst.b $340(a6) bpl.s loc_72DA8 lea $340(a6),a5 movea.l $20(a6),a1 bra.s loc_72DB8

===========================================================================

loc_72DA8: subq.b #2,d0 lsl.b #2,d0 movea.l (a0,d0.w),a5 tst.b (a5) bpl.s loc_72DC8 movea.l $18(a6),a1

loc_72DB8: bclr #2,(a5) bset #1,(a5) move.b $B(a5),d0 jsr sub_72C4E(pc)

loc_72DC8: movea.l a3,a5 bra.s loc_72E02

===========================================================================

loc_72DCC: lea $370(a6),a0 tst.b (a0) bpl.s loc_72DE0 cmpi.b #$E0,d0 beq.s loc_72DEA cmpi.b #$C0,d0 beq.s loc_72DEA

loc_72DE0: lea dword_722CC(pc),a0 lsr.b #3,d0 movea.l (a0,d0.w),a0

loc_72DEA: bclr #2,(a0) bset #1,(a0) cmpi.b #$E0,1(a0) bne.s loc_72E02 move.b $1F(a0),($C00011).l

loc_72E02: addq.w #8,sp rts

===========================================================================

loc_72E06: ; XREF: loc_72A64 move.b #$E0,1(a5) move.b (a4)+,$1F(a5) btst #2,(a5) bne.s locret_72E1E move.b -1(a4),($C00011).l

locret_72E1E: rts

===========================================================================

loc_72E20: ; XREF: loc_72A64 bclr #3,(a5) rts

===========================================================================

loc_72E26: ; XREF: loc_72A64 move.b (a4)+,$B(a5) rts

===========================================================================

loc_72E2C: ; XREF: loc_72A64 move.b (a4)+,d0 lsl.w #8,d0 move.b (a4)+,d0 adda.w d0,a4 subq.w #1,a4 rts

===========================================================================

loc_72E38: ; XREF: loc_72A64 moveq #0,d0 move.b (a4)+,d0 move.b (a4)+,d1 tst.b $24(a5,d0.w) bne.s loc_72E48 move.b d1,$24(a5,d0.w)

loc_72E48: subq.b #1,$24(a5,d0.w) bne.s loc_72E2C addq.w #2,a4 rts

===========================================================================

loc_72E52: ; XREF: loc_72A64 moveq #0,d0 move.b $D(a5),d0 subq.b #4,d0 move.l a4,(a5,d0.w) move.b d0,$D(a5) bra.s loc_72E2C

===========================================================================

loc_72E64: ; XREF: loc_72A64 move.b #$88,d0 move.b #$F,d1 jsr sub_7272E(pc) move.b #$8C,d0 move.b #$F,d1 bra.w sub_7272E

===========================================================================

Kos_Z80: binclude sound\z80_1.bin dc.w ((SegaPCM&$FF)<<8)+((SegaPCM&$FF00)>>8) dc.b $21 dc.w (((EndOfRom-SegaPCM)&$FF)<<8)+(((EndOfRom-SegaPCM)&$FF00)>>8) binclude sound\z80_2.bin align 2 Music81: binclude sound\music81.bin align 2 Music82: binclude sound\music82.bin align 2 Music83: binclude sound\music83.bin align 2 Music84: binclude sound\music84.bin align 2 Music85: binclude sound\music85.bin align 2 Music86: binclude sound\music86.bin align 2 Music87: binclude sound\music87.bin align 2 Music88: binclude sound\music88.bin align 2 Music89: binclude sound\music89.bin align 2 Music8A: binclude sound\music8A.bin align 2 Music8B: binclude sound\music8B.bin align 2 Music8C: binclude sound\music8C.bin align 2 Music8D: binclude sound\music8D.bin align 2 Music8E: binclude sound\music8E.bin align 2 Music8F: binclude sound\music8F.bin align 2 Music90: binclude sound\music90.bin align 2 Music91: binclude sound\music91.bin align 2 Music92: binclude sound\music92.bin align 2 Music93: binclude sound\music93.bin align 2

---------------------------------------------------------------------------
Sound effect pointers
---------------------------------------------------------------------------

SoundIndex: dc.l SoundA0, SoundA1, SoundA2 dc.l SoundA3, SoundA4, SoundA5 dc.l SoundA6, SoundA7, SoundA8 dc.l SoundA9, SoundAA, SoundAB dc.l SoundAC, SoundAD, SoundAE dc.l SoundAF, SoundB0, SoundB1 dc.l SoundB2, SoundB3, SoundB4 dc.l SoundB5, SoundB6, SoundB7 dc.l SoundB8, SoundB9, SoundBA dc.l SoundBB, SoundBC, SoundBD dc.l SoundBE, SoundBF, SoundC0 dc.l SoundC1, SoundC2, SoundC3 dc.l SoundC4, SoundC5, SoundC6 dc.l SoundC7, SoundC8, SoundC9 dc.l SoundCA, SoundCB, SoundCC dc.l SoundCD, SoundCE, SoundCF SoundD0Index: dc.l SoundD0 SoundA0: binclude sound\soundA0.bin align 2 SoundA1: binclude sound\soundA1.bin align 2 SoundA2: binclude sound\soundA2.bin align 2 SoundA3: binclude sound\soundA3.bin align 2 SoundA4: binclude sound\soundA4.bin align 2 SoundA5: binclude sound\soundA5.bin align 2 SoundA6: binclude sound\soundA6.bin align 2 SoundA7: binclude sound\soundA7.bin align 2 SoundA8: binclude sound\soundA8.bin align 2 SoundA9: binclude sound\soundA9.bin align 2 SoundAA: binclude sound\soundAA.bin align 2 SoundAB: binclude sound\soundAB.bin align 2 SoundAC: binclude sound\soundAC.bin align 2 SoundAD: binclude sound\soundAD.bin align 2 SoundAE: binclude sound\soundAE.bin align 2 SoundAF: binclude sound\soundAF.bin align 2 SoundB0: binclude sound\soundB0.bin align 2 SoundB1: binclude sound\soundB1.bin align 2 SoundB2: binclude sound\soundB2.bin align 2 SoundB3: binclude sound\soundB3.bin align 2 SoundB4: binclude sound\soundB4.bin align 2 SoundB5: binclude sound\soundB5.bin align 2 SoundB6: binclude sound\soundB6.bin align 2 SoundB7: binclude sound\soundB7.bin align 2 SoundB8: binclude sound\soundB8.bin align 2 SoundB9: binclude sound\soundB9.bin align 2 SoundBA: binclude sound\soundBA.bin align 2 SoundBB: binclude sound\soundBB.bin align 2 SoundBC: binclude sound\soundBC.bin align 2 SoundBD: binclude sound\soundBD.bin align 2 SoundBE: binclude sound\soundBE.bin align 2 SoundBF: binclude sound\soundBF.bin align 2 SoundC0: binclude sound\soundC0.bin align 2 SoundC1: binclude sound\soundC1.bin align 2 SoundC2: binclude sound\soundC2.bin align 2 SoundC3: binclude sound\soundC3.bin align 2 SoundC4: binclude sound\soundC4.bin align 2 SoundC5: binclude sound\soundC5.bin align 2 SoundC6: binclude sound\soundC6.bin align 2 SoundC7: binclude sound\soundC7.bin align 2 SoundC8: binclude sound\soundC8.bin align 2 SoundC9: binclude sound\soundC9.bin align 2 SoundCA: binclude sound\soundCA.bin align 2 SoundCB: binclude sound\soundCB.bin align 2 SoundCC: binclude sound\soundCC.bin align 2 SoundCD: binclude sound\soundCD.bin align 2 SoundCE: binclude sound\soundCE.bin align 2 SoundCF: binclude sound\soundCF.bin align 2 SoundD0: binclude sound\soundD0.bin align 2 SegaPCM: binclude sound\segapcm.bin align 2 </asm> and replace it completely with: <asm> align $8000 DriverData: dc.b $F3,$F3,$ED,$56,$C3,$89,$00,$00 dc.b $2A,$15 dc.b $00,$06,$00,$09,$08,$7E dc.b $23,$66,$6F,$08,$C9 dc.w ((($1300&$1FFF)>>$08)|(($1300&$1FFF)<<$08))&$FFFF dc.b $00,$4F,$06,$00,$09,$09,$00,$00,$00 dc.b $7E,$23,$66,$6F,$C9,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 dc.b $00,$00,$00,$00,$00,$00,$00,$00,$F3,$F5,$FD,$E5,$D9,$ED,$5F,$32 dc.b $17,$1C,$CD,$21,$01,$3A,$02,$1C,$B7,$28,$12,$3A,$04,$1C,$B7,$20 dc.b $08,$3E,$06,$32,$04,$1C,$C3,$3D,$00,$3D,$32,$04,$1C,$AF,$32,$21 dc.b $1C,$3A,$30,$1C,$E6,$7F,$4F,$06,$00,$21,$DC,$00,$09,$7E Z80_0x006E: dc.b $C3,$4C,$11 dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77 dc.b $AF,$77 Z80_0x0082: dc.b $D9,$FD,$E1,$F1,$06,$01,$C9,$31,$00,$20,$0E,$00,$06,$00 dc.b $10,$FE,$0D,$28,$F9,$CD,$29,$09,$3E,$80,$3E,$06,$32,$3E,$1C,$AF dc.b $32,$27,$1C,$32,$30,$1C,$32,$3F,$1C,$32,$28,$1C,$3E,$05,$32,$04 dc.b $1C,$FB,$C3,$62,$10,$DD,$CB,$01,$7E,$C0,$DD,$CB,$00,$56,$C0,$DD dc.b $86,$01,$DD,$CB,$01,$56,$20,$09,$32,$00,$40,$00,$79,$32,$01,$40 dc.b $C9,$D6,$04,$32,$02,$40,$00,$79,$32,$03,$40,$C9 Z80_0x00DC: Dac_Sample_Selector: dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)) dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)) dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)) dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)) dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)) dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)) dc.b ((DacBank0>>$F)),((DacBank0>>$F)),((DacBank0>>$F)),((DacBank1>>$F)) dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)) dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)) dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)) dc.b ((DacBank1>>$F)),((DacBank1>>$F)),((DacBank1>>$F)),((DacBank2>>$F)) dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) dc.b ((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)),((DacBank2>>$F)) dc.b ((DacBank2>>$F)) dc.b $CD,$E8,$07,$CD,$A2,$01,$CD,$B1,$09,$CD,$62,$08,$CD,$C6,$08 dc.b $3A,$16,$1C,$FE,$29,$20,$18,$3A,$0A,$1C,$FE,$2A,$28,$04,$FE,$32 dc.b $38,$04,$AF,$32,$0A,$1C,$AF,$32,$0B,$1C,$32,$0C,$1C,$18,$1F,$3A dc.b $16,$1C,$FE,$FF,$28,$18,$21,$0A,$1C,$5E,$23,$56,$23,$7E,$B2,$B3 dc.b $28,$0C,$CD,$C7,$09,$CD,$DF,$04,$CD,$DF,$04,$CD,$DF,$04 Z80_0x016E: dc.b $3A,$3E,$1C dc.b $FE,$00 dc.b $C2 dc.w (((Z80DefaultBankSwitch&$1FFF)>>$08)|((Z80DefaultBankSwitch&$1FFF)<<$08))&$FFFF dc.b $CD dc.w (((Z80BankSwitch0&$1FFF)>>$08)|((Z80BankSwitch0&$1FFF)<<$08))&$FFFF dc.b $18,$03 Z80DefaultBankSwitch: dc.b $CD dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF dc.b $00,$00,$00,$00,$00 Z80_0x0183: dc.b $AF,$32,$19,$1C,$3A,$16,$1C,$FE,$FF,$CC,$05,$0A,$DD dc.b $21,$40,$1C,$DD,$CB,$00,$7E,$C4,$7A,$0B,$06,$08,$DD,$21,$70,$1C dc.b $18,$1A,$3E,$01,$32,$19,$1C Z80_0x01A7: dc.b $3E, ((SndBank>>$0F)) dc.b $CD dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 dc.b $DD,$21,$F0,$1D,$06,$07,$C5,$DD,$CB,$00 dc.b $7E,$C4,$E6,$01,$11,$30,$00,$DD,$19,$C1,$10,$F0,$3A,$08,$1C,$B7 dc.b $C8,$3A,$2F,$1C,$B7,$C2,$E1,$01,$3A,$08,$1C,$32,$2F,$1C,$C3,$27 dc.b $01,$3D,$32,$2F,$1C,$C9,$DD,$CB,$01,$7E,$C2,$9C,$0F,$CD,$37,$03 dc.b $20,$17,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$CD,$6C,$04 dc.b $CD,$C6,$03,$CD,$28,$02,$C3,$3F,$03,$DD,$CB,$00,$66,$C0,$CD,$6A dc.b $03,$DD,$7E,$1E,$B7,$28,$06,$DD,$35,$1E,$CA,$58,$03,$CD,$6C,$04 dc.b $DD,$CB,$00,$76,$C0,$CD,$C6,$03,$DD,$CB,$00,$56,$C0,$DD,$CB,$00 dc.b $46,$C2,$41,$02,$3E,$A4,$4C,$CD,$B5,$00,$3E,$A0,$4D,$CD,$B5,$00 dc.b $C9,$DD,$7E,$01,$FE,$02,$20,$EC,$06,$04,$21,$6F,$02,$C5,$7E,$23 dc.b $E5,$EB,$4E,$23,$46,$23,$EB,$DD,$6E,$0D,$DD,$66,$0E,$09,$F5,$4C dc.b $CD,$C8,$00,$F1,$D6,$04,$4D,$CD,$C8,$00,$E1,$C1,$10,$DF,$C9,$AD dc.b $AE,$AC,$A6,$C9,$DD,$5E,$03,$DD,$56,$04,$DD,$CB,$00,$8E,$DD,$CB dc.b $00,$A6,$1A,$13,$FE,$E0,$D2,$CF,$0B,$08,$CD,$58,$03,$08,$DD,$CB dc.b $00,$5E,$C2,$E5,$02,$B7,$F2,$05,$03,$D6,$81,$F2,$A3,$02,$CD,$44 dc.b $10,$18,$2E,$DD,$86,$05,$21,$88,$0A,$F5,$DF,$F1,$DD,$CB,$01,$7E dc.b $20,$19,$D5,$16,$08,$1E,$0C,$08,$AF,$08,$93,$38,$05,$08,$82,$18 dc.b $F8,$08,$83,$21,$30,$0B,$DF,$08,$B4,$67,$D1,$DD,$75,$0D,$DD,$74 dc.b $0E,$1A,$B7,$F2,$04,$03,$DD,$7E,$0C,$DD,$77,$0B,$18,$2D,$1A,$13 dc.b $DD,$77,$11,$18,$1E,$67,$1A,$13,$6F,$B4,$28,$0C,$DD,$7E,$05,$06 dc.b $00,$B7,$F2,$F6,$02,$05,$4F,$09,$DD,$75,$0D,$DD,$74,$0E,$1A,$13 dc.b $DD,$77,$11,$1A,$13,$CD,$2D,$03,$DD,$77,$0C,$DD,$73,$03,$DD,$72 dc.b $04,$DD,$7E,$0C,$DD,$77,$0B,$DD,$CB,$00,$4E,$C0,$AF,$DD,$77,$25 dc.b $DD,$77,$22,$DD,$77,$17,$DD,$7E,$1F,$DD,$77,$1E,$C9,$DD,$46,$02 dc.b $05,$C8,$4F,$81,$10,$FD,$C9,$DD,$7E,$0B,$3D,$DD,$77,$0B,$C9,$DD dc.b $7E,$0D,$DD,$B6,$0E,$C8,$DD,$7E,$00,$E6,$06,$C0,$DD,$7E,$01,$F6 dc.b $F0,$4F,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$00,$E6,$06,$C0,$DD,$4E dc.b $01,$CB,$79,$C0,$3E,$28,$CD,$C8,$00,$C9,$DD,$7E,$18,$B7,$C8,$F8 dc.b $3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$DD,$66,$1D,$DD,$6E,$1C,$11,$AE dc.b $04,$06,$04,$DD,$4E,$19,$F5,$CB,$29,$C5,$30,$08,$86,$E6,$7F,$4F dc.b $1A,$CD,$B5,$00,$C1,$13,$23,$F1,$10,$EC,$C9,$DD,$CB,$07,$7E,$C8 dc.b $DD,$CB,$00,$4E,$C0,$DD,$5E,$20,$DD,$56,$21,$DD,$E5,$E1,$06,$00 dc.b $0E,$24,$09,$EB,$ED,$A0,$ED,$A0,$ED,$A0,$7E,$CB,$3F,$12,$AF,$DD dc.b $77,$22,$DD,$77,$23,$C9,$DD,$7E,$07,$B7,$C8,$FE,$80,$20,$48,$DD dc.b $35,$24,$C0,$DD,$34,$24,$E5,$DD,$6E,$22,$DD,$66,$23,$DD,$5E,$20 dc.b $DD,$56,$21,$D5,$FD,$E1,$DD,$35,$25,$20,$17,$FD,$7E,$01,$DD,$77 dc.b $25,$DD,$7E,$26,$4F,$E6,$80,$07,$ED,$44,$47,$09,$DD,$75,$22,$DD dc.b $74,$23,$C1,$09,$DD,$35,$27,$C0,$FD,$7E,$03,$DD,$77,$27,$DD,$7E dc.b $26,$ED,$44,$DD,$77,$26,$C9,$3D,$EB,$0E,$08,$CF,$DF,$18,$03,$DD dc.b $77,$25,$E5,$DD,$4E,$25,$06,$00,$09,$7E,$E1,$CB,$7F,$CA,$5D,$04 dc.b $FE,$82,$28,$12,$FE,$80,$28,$12,$FE,$84,$28,$11,$26,$FF,$30,$1F dc.b $DD,$CB,$00,$F6,$E1,$C9,$03,$0A,$18,$D5,$AF,$18,$D2,$03,$0A,$DD dc.b $86,$22,$DD,$77,$22,$DD,$34,$25,$DD,$34,$25,$18,$C5,$26,$00,$6F dc.b $DD,$46,$22,$04,$EB,$19,$10,$FD,$DD,$34,$25,$C9,$DD,$66,$0E,$DD dc.b $6E,$0D,$06,$00,$DD,$7E,$10,$B7,$F2,$7D,$04,$06,$FF,$4F,$09,$C9 dc.b $2A,$37,$1C,$3A,$19,$1C,$B7,$28,$06,$DD,$6E,$2A,$DD,$66,$2B,$AF dc.b $B0,$C8,$11,$19,$00,$19,$10,$FD,$C9,$B0,$30,$38,$34,$3C,$50,$58 dc.b $54,$5C,$60,$68,$64,$6C,$70,$78,$74,$7C,$80,$88,$84,$8C,$40,$48 dc.b $44,$4C,$90,$98,$94,$9C,$11,$99,$04,$DD,$4E,$0A,$3E,$B4,$CD,$B5 dc.b $00,$CD,$D7,$04,$DD,$77,$1B,$06,$14,$CD,$D7,$04,$10,$FB,$DD,$75 dc.b $1C,$DD,$74,$1D,$C3,$9C,$0C,$1A,$13,$4E,$23,$CD,$B5,$00,$C9,$3A dc.b $05,$1C,$32,$09,$1C,$3A,$06,$1C,$32,$05,$1C,$3A,$07,$1C,$32,$06 dc.b $1C,$AF,$32,$07,$1C,$3A,$09,$1C,$FE,$FF,$CA,$FB,$09,$FE,$33,$DA dc.b $4A,$05,$FE,$E0,$DA,$99,$06,$FE,$E1,$DA,$29,$09,$FE,$E6,$D2,$29 dc.b $09,$D6,$E1,$21,$1C,$05,$DF,$AF,$32,$18,$1C,$E9,$45,$08,$29,$09 dc.b $A1,$09,$26,$05,$45,$08,$DD,$21,$F0,$1D,$06,$07,$3E,$01,$32,$19 dc.b $1C,$C5,$DD,$CB,$00,$7E,$C4,$45,$05,$11,$30,$00,$DD,$19,$C1,$10 dc.b $F0,$CD,$80,$06,$C9,$E5,$E5,$C3,$61,$0C,$D6,$01,$F8,$F5,$FE,$29 dc.b $C2,$CD,$05,$3A,$29,$1C,$B7,$CA,$72,$05,$AF,$32,$0A,$1C,$32,$0B dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$32,$09,$1C dc.b $F1,$C9,$3A,$16,$1C,$FE,$29,$CA,$D0,$05,$AF,$32,$0A,$1C,$32,$0B dc.b $1C,$32,$0C,$1C,$32,$05,$1C,$32,$06,$1C,$32,$07,$1C,$3A,$3E,$1C dc.b $32,$2D,$1C,$3A,$08,$1C,$32,$2E,$1C,$AF,$32,$08,$1C,$21,$40,$1C dc.b $11,$F0,$1D,$01,$B0,$01,$ED,$B0,$21,$F0,$1D,$11,$30,$00,$06,$09 dc.b $7E,$E6,$7F,$CB,$D6,$77,$19,$10,$F7,$3E,$29,$32,$16,$1C,$3A,$24 dc.b $1C,$32,$2C,$1C,$2A,$37,$1C,$22,$2A,$1C,$C3,$D0,$05,$CD,$29,$09 dc.b $F1,$F5 Z80_0x05D2: dc.b $21,$48,$0B dc.b $85,$6F,$8C,$95,$67,$22,$DE,$05,$3A,$48,$0B dc.b $32,$3E,$1C Z80_0x05E3: dc.b $CD dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 dc.b $3E,$B6,$32,$02,$40,$00,$3E,$C0,$32,$03,$40 dc.b $F1,$0E,$04,$CF,$DF,$E5,$E5,$E7,$22,$37,$1C,$E1,$FD,$E1,$FD,$7E dc.b $05,$32,$13,$1C,$32,$24,$1C,$11,$06,$00,$19,$22,$33,$1C,$21,$85 dc.b $06,$22,$35,$1C,$11,$40,$1C,$FD,$46,$02,$FD,$7E,$04,$C5,$2A,$35 dc.b $1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A,$33,$1C,$ED,$A0,$ED dc.b $A0,$ED,$A0,$ED,$A0,$22,$33,$1C,$CD,$AE,$07,$C1,$10,$DF,$FD,$7E dc.b $03,$B7,$CA,$80,$06,$47,$21,$93,$06,$22,$35,$1C,$11,$60,$1D,$FD dc.b $7E,$04,$C5,$2A,$35,$1C,$ED,$A0,$ED,$A0,$12,$13,$22,$35,$1C,$2A dc.b $33,$1C,$01,$06,$00,$ED,$B0,$22,$33,$1C,$CD,$B5,$07,$C1,$10,$E2 dc.b $AF,$32,$09,$1C,$C9,$80,$06,$80,$00,$80,$01,$80,$02,$80,$04,$80 dc.b $05,$80,$06,$80,$80,$80,$A0,$80,$C0,$D6,$33,$B7,$C2,$A7,$06,$3A dc.b $28,$1C,$EE,$01,$32,$28,$1C,$08 Z80_0x06A8: dc.b $3E, ((SndBank>>$0F)) dc.b $CD dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 Z80_0x06B7: dc.b $AF,$0E,$06,$32,$19,$1C,$08,$FE,$78 dc.b $CA,$F5,$06,$FE,$89,$DA,$EF,$06,$F5,$47,$3A,$25,$1C,$90,$C2,$E4 dc.b $06,$3E,$80,$32,$26,$1C,$CF,$F1,$4F,$DF,$23,$23,$23,$7E,$32,$31 dc.b $1C,$C3,$80,$06,$AF,$32,$26,$1C,$F1,$32,$25,$1C,$C3,$F5,$06,$F5 dc.b $AF,$32,$27,$1C,$F1,$CF,$DF,$E5,$E7,$22,$39,$1C,$AF,$32,$15,$1C dc.b $E1,$E5,$FD,$E1,$FD,$7E,$02,$32,$3B,$1C,$11,$04,$00,$19,$FD,$46 dc.b $03,$78,$32,$31,$1C,$C5,$E5,$23,$4E,$CD,$78,$07,$CB,$D6,$DD,$E5 dc.b $3A,$19,$1C,$B7,$28,$03,$E1,$FD,$E5,$D1,$E1,$ED,$A0,$1A,$FE,$02 dc.b $CC,$5E,$09,$ED,$A0,$3A,$3B,$1C,$12,$13,$ED,$A0,$ED,$A0,$ED,$A0 dc.b $ED,$A0,$CD,$AE,$07,$DD,$CB,$00,$7E,$28,$0C,$DD,$7E,$01,$FD,$BE dc.b $01,$20,$04,$FD,$CB,$00,$D6,$E5,$2A,$39,$1C,$3A,$19,$1C,$B7,$28 dc.b $04,$FD,$E5,$DD,$E1,$DD,$75,$2A,$DD,$74,$2B,$CD,$58,$03,$CD,$6B dc.b $09,$E1,$C1,$10,$A0,$C3,$80,$06,$CB,$79,$20,$08,$79,$CB,$57,$28 dc.b $1A,$3D,$18,$17,$3E,$1F,$CD,$4D,$10,$3E,$FF,$32,$11,$7F,$79,$CB dc.b $3F,$CB,$3F,$CB,$3F,$CB,$3F,$CB,$3F,$C6,$02,$D6,$02,$32,$32,$1C dc.b $F5,$21,$C8,$07,$DF,$E5,$DD,$E1,$F1,$21,$D8,$07,$DF,$C9,$08,$AF dc.b $12,$13,$12,$13,$08,$EB,$36,$30,$23,$36,$C0,$23,$36,$01,$06,$24 dc.b $23,$36,$00,$10,$FB,$23,$EB,$C9,$F0,$1D,$20,$1E,$50,$1E,$80,$1E dc.b $B0,$1E,$E0,$1E,$10,$1F,$10,$1F,$D0,$1C,$00,$1D,$30,$1D,$40,$1C dc.b $60,$1D,$90,$1D,$C0,$1D,$C0,$1D,$21,$10,$1C,$7E,$B7,$C8,$FA,$F9 dc.b $07,$D1,$3D,$C0,$36,$02,$C3,$72,$09,$AF,$77,$3A,$0D,$1C,$B7,$C2 dc.b $29,$09,$DD,$21,$70,$1C,$06,$06,$3A,$11,$1C,$B7,$20,$06,$DD,$CB dc.b $00,$7E,$28,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00,$DD dc.b $19,$10,$E5,$DD,$21,$40,$1F,$06,$07,$DD,$CB,$00,$7E,$28,$0E,$DD dc.b $CB,$01,$7E,$20,$08,$DD,$4E,$0A,$3E,$B4,$CD,$B5,$00,$11,$30,$00 dc.b $DD,$19,$10,$E5,$C9,$3E,$28,$32,$0D,$1C,$3E,$06,$32,$0F,$1C,$32 dc.b $0E,$1C,$AF,$32,$40,$1C,$32,$C0,$1D,$32,$60,$1D,$32,$90,$1D,$C3 dc.b $A1,$09,$21,$0D,$1C,$7E,$B7,$C8,$FC,$52,$08,$CB,$BE,$3A,$0F,$1C dc.b $3D,$28,$04,$32,$0F,$1C,$C9,$3A,$0E,$1C,$32,$0F,$1C,$3A,$0D,$1C dc.b $3D,$32,$0D,$1C,$CA,$29,$09,$3A,$3E,$1C Z80_0x088A: dc.b $21,$00,$60 dc.b $77,$1F,$77,$1F,$77,$1F,$77,$AF,$16,$01,$72,$77,$77,$77,$77 Z80_0x089C: dc.b $DD,$21,$40,$1C dc.b $06,$06,$DD,$34,$06,$F2,$AD,$08,$DD,$35,$06,$18,$11,$DD,$CB,$00 dc.b $7E,$28,$0B,$DD,$CB,$00,$56,$20,$05,$C5,$CD,$9C,$0C,$C1,$11,$30 dc.b $00,$DD,$19,$10,$DD,$C9,$3A,$29,$1C,$B7,$C8,$3A,$3E,$1C Z80_0x08CE: dc.b $CD dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 Z80_0x08E0: dc.b $3A,$0E,$1C,$3D,$32,$0E,$1C,$C0,$3A,$0F,$1C,$32,$0E,$1C,$06,$05 dc.b $DD,$21,$70,$1C,$11,$30,$00,$DD,$7E,$06,$3D,$DD,$77,$06,$C5,$CD dc.b $9C,$0C,$C1,$DD,$19,$10,$F0,$3A,$29,$1C,$3D,$32,$29,$1C,$C0,$06 dc.b $03,$DD,$21,$60,$1D,$11,$30,$00,$DD,$CB,$00,$96,$DD,$19,$10,$F8 dc.b $DD,$21,$40,$1C,$DD,$CB,$00,$96,$C9,$21,$0D,$1C,$11,$0E,$1C,$01 dc.b $C6,$03,$36,$00,$ED,$B0,$AF,$32,$08,$1C,$DD,$21,$85,$06,$06,$06 dc.b $C5,$CD,$DB,$09,$CD,$6B,$09,$DD,$23,$DD,$23,$C1,$10,$F2,$06,$07 dc.b $AF,$32,$0D,$1C,$CD,$A1,$09,$0E,$00,$3E,$2B,$CD,$C8,$00,$AF,$32 dc.b $12,$1C,$4F,$3E,$27,$CD,$C8,$00,$C3,$80,$06,$3E,$90,$0E,$00,$C3 dc.b $EF,$09,$CD,$A1,$09,$C5,$F5,$06,$03,$3E,$B4,$0E,$00,$F5,$CD,$C8 dc.b $00,$F1,$3C,$10,$F8,$06,$02,$3E,$B4,$F5,$CD,$D3,$00,$F1,$3C,$10 dc.b $F8,$0E,$00,$06,$06,$3E,$28,$F5,$CD,$C8,$00,$0C,$F1,$10,$F8,$F1 dc.b $C1,$C5,$06,$04,$3E,$9F,$32,$11,$7F,$C6,$20,$10,$F9,$C1,$C3,$80 dc.b $06,$3A,$24,$1C,$21,$13,$1C,$86,$77,$D0,$21,$4B,$1C,$11,$30,$00 dc.b $06,$09,$34,$19,$10,$FC,$C9,$21,$0A,$1C,$11,$05,$1C,$ED,$A0,$ED dc.b $A0,$ED,$A0,$AF,$2B,$77,$2B,$77,$2B,$77,$C9,$CD,$EB,$09,$3E,$40 dc.b $0E,$7F,$CD,$EF,$09,$DD,$4E,$01,$C3,$64,$03,$3E,$80,$0E,$FF,$06 dc.b $04,$F5,$CD,$B5,$00,$F1,$C6,$04,$10,$F7,$C9,$CD,$29,$09,$3E,$01 dc.b $32,$3F,$1C,$E1,$C9,$AF,$32,$16,$1C,$3A,$2C,$1C,$32,$24,$1C,$3A dc.b $2E,$1C,$32,$08,$1C,$2A,$2A,$1C,$22,$37,$1C Z80_0x0A1B: dc.b $3A,$2D,$1C,$32,$3E,$1C dc.b $CD dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 Z80_0x0A33: dc.b $21,$F0,$1D,$11,$40,$1C,$01,$B0,$01,$ED,$B0,$3A,$40 dc.b $1C,$F6,$84,$32,$40,$1C,$DD,$21,$70,$1C,$06,$08,$DD,$7E,$00,$F6 dc.b $84,$DD,$77,$00,$DD,$CB,$01,$7E,$C2,$73,$0A,$DD,$CB,$00,$96,$DD dc.b $7E,$06,$C6,$40,$DD,$77,$06,$DD,$7E,$08,$C5,$47,$CD,$80,$04,$CD dc.b $B6,$04,$C1,$11,$30,$00,$DD,$19,$10,$D2,$3E,$40,$32,$29,$1C,$3E dc.b $02,$32,$0F,$1C,$32,$0E,$1C,$C9,$FF,$03,$FF,$03,$FF,$03,$FF,$03 dc.b $FF,$03,$FF,$03,$FF,$03,$FF,$03,$FF,$03,$F7,$03,$BE,$03,$88,$03 dc.b $56,$03,$26,$03,$F9,$02,$CE,$02,$A5,$02,$80,$02,$5C,$02,$3A,$02 dc.b $1A,$02,$FB,$01,$DF,$01,$C4,$01,$AB,$01,$93,$01,$7D,$01,$67,$01 dc.b $53,$01,$40,$01,$2E,$01,$1D,$01,$0D,$01,$FE,$00,$EF,$00,$E2,$00 dc.b $D6,$00,$C9,$00,$BE,$00,$B4,$00,$A9,$00,$A0,$00,$97,$00,$8F,$00 dc.b $87,$00,$7F,$00,$78,$00,$71,$00,$6B,$00,$65,$00,$5F,$00,$5A,$00 dc.b $55,$00,$50,$00,$4B,$00,$47,$00,$43,$00,$40,$00,$3C,$00,$39,$00 dc.b $36,$00,$33,$00,$30,$00,$2D,$00,$2B,$00,$28,$00,$26,$00,$24,$00 dc.b $22,$00,$20,$00,$1F,$00,$1D,$00,$1B,$00,$1A,$00,$18,$00,$17,$00 dc.b $16,$00,$15,$00,$13,$00,$12,$00,$11,$00,$10,$00,$00,$00,$00,$00 dc.b $84,$02,$AB,$02,$D3,$02,$FE,$02,$2D,$03,$5C,$03,$8F,$03,$C5,$03 dc.b $FF,$03,$3C,$04,$7C,$04,$C0,$04 BankSelector: dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)) dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)),((Bank1>>$0F)) dc.b ((Bank1>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)) dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)) dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)) dc.b ((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)) dc.b ((Bank2>>$0F)),((Bank1>>$0F)),((Bank2>>$0F)),((Bank2>>$0F)) dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) dc.b ((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) dc.b ((Bank2>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)),((Bank3>>$0F)) dc.b ((Bank3>>$0F)),((Bank0>>$0F)),((Bank2>>$0F)),((Bank0>>$0F)) dc.b ((Bank3>>$0F)),((Bank3>>$0F)) dc.b $CD,$37,$03,$C0,$DD,$5E dc.b $03,$DD,$56,$04,$1A,$13,$FE,$E0,$D2,$C5,$0B,$B7,$FA,$93,$0B,$1B dc.b $DD,$7E,$0D,$DD,$77,$0D,$FE,$80,$CA,$B5,$0B,$CB,$BF,$D5,$08,$CD dc.b $58,$03,$CD,$5E,$09,$08,$DD,$21,$40,$1C,$DD,$CB,$00,$56,$C2,$B4 dc.b $0B,$32,$30,$1C,$D1,$1A,$13,$B7,$F2,$05,$03,$1B,$DD,$7E,$0C,$DD dc.b $77,$0B,$C3,$0B,$03,$21,$CB,$0B,$C3,$D2,$0B,$13,$C3,$84,$0B,$21 dc.b $DB,$0B,$E5,$D6,$E0,$21,$DF,$0B,$DF,$1A,$E9,$13,$C3,$82,$02,$33 dc.b $0C,$59,$0C,$5D,$0C,$61,$0C,$67,$0C,$83,$0C,$85,$0C,$BD,$0C,$C3 dc.b $0C,$47,$0C,$2F,$0C,$CD,$0C,$E3,$0C,$FD,$0C,$03,$0D,$10,$0D,$4F dc.b $0D,$5D,$0D,$69,$0D,$11,$0E,$65,$0D,$30,$0E,$39,$0E,$3F,$0E,$56 dc.b $0E,$70,$0E,$83,$0E,$89,$0E,$90,$0E,$B2,$0E,$C0,$0E,$07,$0F,$0E dc.b $0F,$12,$0F,$1A,$0F,$55,$0F,$63,$0F,$72,$0F,$8D,$0F,$96,$0F,$32 dc.b $30,$1C,$C9,$0E,$3F,$DD,$7E,$0A,$A1,$D5,$EB,$B6,$DD,$77,$0A,$4F dc.b $3E,$B4,$CD,$B5,$00,$D1,$C9,$21,$27,$1C,$7E,$DD,$86,$05,$DD,$77 dc.b $05,$FE,$10,$CA,$57,$0C,$34,$1B,$C9,$DD,$77,$10,$C9,$32,$16,$1C dc.b $C9,$CD,$DB,$09,$C3,$69,$0D,$DD,$CB,$01,$7E,$28,$0D,$CB,$3F,$CB dc.b $3F,$CB,$3F,$EE,$0F,$E6,$0F,$C3,$F9,$0C,$EE,$7F,$E6,$7F,$DD,$77 dc.b $06,$18,$19,$13,$1A,$DD,$CB,$01,$7E,$C0,$DD,$86,$06,$F2,$99,$0C dc.b $EA,$97,$0C,$AF,$C3,$99,$0C,$3E,$7F,$DD,$77,$06,$D5,$11,$AE,$04 dc.b $DD,$6E,$1C,$DD,$66,$1D,$06,$04,$7E,$B7,$F2,$B0,$0C,$DD,$86,$06 dc.b $E6,$7F,$4F,$1A,$CD,$B5,$00,$13,$23,$10,$ED,$D1,$C9,$DD,$CB,$00 dc.b $CE,$1B,$C9,$CD,$2D,$03,$DD,$77,$1E,$DD,$77,$1F,$C9,$13,$C6,$28 dc.b $4F,$06,$00,$DD,$E5,$E1,$09,$7E,$3D,$CA,$DE,$0C,$13,$C9,$AF,$77 dc.b $C3,$39,$0E,$DD,$CB,$01,$7E,$C8,$DD,$CB,$00,$A6,$DD,$35,$17,$DD dc.b $86,$06,$FE,$0F,$DA,$F9,$0C,$3E,$0F,$DD,$77,$06,$C9,$D6,$40,$DD dc.b $77,$05,$C9,$CD,$0A,$0D,$CD,$C8,$00,$C9,$EB,$7E,$23,$4E,$EB,$C9 dc.b $DD,$CB,$01,$7E,$20,$30,$CD,$EB,$09,$1A,$DD,$77,$08,$B7,$F2,$3C dc.b $0D,$13,$1A,$DD,$77,$0F,$D5,$DD,$7E,$0F,$D6,$81,$0E,$04,$CF,$DF dc.b $E7,$DD,$7E,$08,$E6,$7F,$47,$CD,$8F,$04,$18,$05,$D5,$47,$CD,$80 dc.b $04,$CD,$B6,$04,$D1,$C9,$B7,$F2,$35,$0E,$13,$C3,$35,$0E,$C9,$DD dc.b $73,$20,$DD,$72,$21,$DD,$36,$07,$80,$13,$13,$13,$C9,$13,$DD,$CB dc.b $01,$7E,$20,$01,$1A,$DD,$77,$07,$C9,$DD,$CB,$00,$BE,$3E,$1F,$32 dc.b $15,$1C,$CD,$58,$03,$DD,$4E,$01,$DD,$E5,$CD,$78,$07,$3A,$19,$1C dc.b $B7,$28,$77,$AF,$32,$18,$1C,$E5,$2A,$37,$1C,$DD,$E1,$DD,$CB,$00 dc.b $96,$DD,$CB,$01,$7E,$20,$68,$DD,$CB,$00,$7E,$28,$5D,$3E,$02,$DD dc.b $BE,$01,$20,$0D,$3E,$4F,$DD,$CB,$00,$46,$20,$02,$E6,$0F,$CD,$E9 dc.b $0E,$DD,$7E,$08,$B7,$F2,$BD,$0D,$CD,$26,$0D,$18,$3A,$47,$E5 Z80_0x0DBF: dc.b $3A,$3E,$1C dc.b $CD dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 Z80_0x0DD4: dc.b $E1,$CD,$8F,$04,$CD,$B6,$04 Z80_0x0DDB: dc.b $3E,((SndBank>>$0F)) dc.b $CD dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00 dc.b $DD,$7E,$18,$B7,$F2,$FA dc.b $0D,$DD,$5E,$19,$DD,$56,$1A,$CD,$7C,$0F,$DD,$E1,$E1,$E1,$C9,$DD dc.b $CB,$00,$46,$28,$F5,$DD,$7E,$1A,$B7,$F2,$0F,$0E,$32,$11,$7F,$18 dc.b $E9,$DD,$CB,$01,$56,$C0,$3E,$DF,$32,$11,$7F,$1A,$DD,$77,$1A,$DD dc.b $CB,$00,$C6,$B7,$20,$06,$DD,$CB,$00,$86,$3E,$FF,$32,$11,$7F,$C9 dc.b $DD,$CB,$01,$7E,$C8,$DD,$77,$08,$C9,$EB,$5E,$23,$56,$1B,$C9,$13 dc.b $C6,$28,$4F,$06,$00,$DD,$E5,$E1,$09,$7E,$B7,$20,$02,$1A,$77,$13 dc.b $35,$C2,$39,$0E,$13,$C9,$4F,$13,$1A,$47,$C5,$DD,$E5,$E1,$DD,$35 dc.b $09,$DD,$4E,$09,$DD,$35,$09,$06,$00,$09,$72,$2B,$73,$D1,$1B,$C9 dc.b $DD,$E5,$E1,$DD,$4E,$09,$06,$00,$09,$5E,$23,$56,$DD,$34,$09,$DD dc.b $34,$09,$C9,$DD,$CB,$07,$BE,$1B,$C9,$DD,$86,$05,$DD,$77,$05,$C9 dc.b $3A,$26,$1C,$FE,$80,$CA,$A1,$0E,$AF,$32,$25,$1C,$32,$26,$1C,$13 dc.b $C9,$3A,$31,$1C,$3D,$32,$31,$1C,$C2,$39,$0E,$AF,$32,$26,$1C,$C3 dc.b $39,$0E,$FE,$01,$20,$05,$DD,$CB,$00,$DE,$C9,$DD,$CB,$00,$9E,$C9 dc.b $DD,$7E,$01,$FE,$02,$20,$2C,$DD,$CB,$00,$C6,$EB,$CD,$73,$02,$06 dc.b $04,$C5,$7E,$23,$E5,$21,$F7,$0E,$87,$4F,$06,$00,$09,$ED,$A0,$ED dc.b $A0,$E1,$C1,$10,$EC,$EB,$1B,$3E,$4F,$32,$12,$1C,$4F,$3E,$27,$CD dc.b $C8,$00,$C9,$13,$13,$13,$C9,$00,$00,$32,$01,$8E,$01,$E4,$01,$34 dc.b $02,$7E,$02,$C2,$02,$F0,$02,$21,$1F,$0C,$DF,$13,$1A,$E9,$32,$24 dc.b $1C,$C9,$DD,$E5,$CD,$F8,$04,$DD,$E1,$C9,$32,$11,$1C,$B7,$28,$1D dc.b $DD,$E5,$D5,$DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$BE dc.b $CD,$5E,$03,$DD,$19,$10,$F5,$D1,$DD,$E1,$C3,$A1,$09,$DD,$E5,$D5 dc.b $DD,$21,$40,$1C,$06,$09,$11,$30,$00,$DD,$CB,$00,$FE,$DD,$19,$10 dc.b $F8,$D1,$DD,$E1,$C9,$EB,$5E,$23,$56,$23,$4E,$06,$00,$23,$EB,$ED dc.b $B0,$1B,$C9,$06,$09,$21,$42,$1C,$C5,$01,$30,$00,$77,$09,$C1,$10 dc.b $F7,$C9,$DD,$36,$18,$80,$DD,$73,$19,$DD,$72,$1A,$21,$B2,$04,$06 dc.b $04,$1A,$13,$4F,$7E,$23,$CD,$B5,$00,$10,$F6,$1B,$C9,$DD,$77,$18 dc.b $13,$1A,$DD,$77,$19,$C9,$AF,$32,$27,$1C,$1B,$C9,$CD,$37,$03,$20 dc.b $0D,$CD,$74,$02,$DD,$CB,$00,$66,$C0,$CD,$9B,$03,$18,$0C,$DD,$7E dc.b $1E,$B7,$28,$06,$DD,$35,$1E,$CA,$44,$10,$CD,$6C,$04,$CD,$C6,$03 dc.b $DD,$CB,$00,$56,$C0,$DD,$4E,$01,$7D,$E6,$0F,$B1,$32,$11,$7F,$7D dc.b $E6,$F0,$B4,$0F,$0F,$0F,$0F,$32,$11,$7F,$DD,$7E,$08,$B7,$0E,$00 dc.b $28,$09,$3D,$0E,$0A,$CF,$DF,$CD,$12,$10,$4F,$DD,$CB,$00,$66,$C0 dc.b $DD,$7E,$06,$81,$CB,$67,$28,$02,$3E,$0F,$DD,$B6,$01,$C6,$10,$DD dc.b $CB,$00,$46,$20,$04,$32,$11,$7F,$C9,$C6,$20,$32,$11,$7F,$C9,$DD dc.b $77,$17,$E5,$DD,$4E,$17,$06,$00,$09,$7E,$E1,$CB,$7F,$28,$21,$FE dc.b $83,$28,$0C,$FE,$81,$28,$13,$FE,$80,$28,$0C,$03,$0A,$18,$E0,$DD dc.b $CB,$00,$E6,$E1,$C3,$44,$10,$AF,$18,$D5,$E1,$DD,$CB,$00,$E6,$C9 dc.b $DD,$34,$17,$C9,$DD,$CB,$00,$E6,$DD,$CB,$00,$56,$C0,$3E,$1F,$DD dc.b $86,$01,$B7,$F0,$32,$11,$7F,$DD,$CB,$00,$46,$C8,$3E,$FF,$32,$11 dc.b $7F,$C9,$F3,$3E,$2B,$0E,$00,$CD,$C8,$00,$FB,$3A,$3F,$1C,$B7,$C2 dc.b $FE,$10,$3A,$30,$1C,$B7,$28,$F2,$3E,$2B,$0E,$80,$F3,$CD,$C8,$00 dc.b $FB,$FD,$21,$EE,$10,$21,$30,$1C,$7E,$3D,$CB,$FE,$21,$00,$80,$DF dc.b $0E,$80,$7E,$32,$A3,$10,$32,$C0,$10,$23,$5E,$23,$56,$23,$7E,$23 dc.b $66,$6F,$06,$0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$07,$07 dc.b $07,$07,$E6,$0F,$32,$BA,$10,$79,$FD,$86,$00,$32,$01,$40,$4F,$06 dc.b $0A,$FB,$10,$FE,$F3,$3E,$2A,$32,$00,$40,$7E,$E6,$0F,$32,$D3,$10 dc.b $79,$FD,$86,$00,$32,$01,$40,$FB,$4F,$3A,$30,$1C,$B7,$F2,$6A,$10 dc.b $23,$1B,$7A,$B3,$C2,$A2,$10,$AF,$32,$30,$1C,$C3,$62,$10,$00,$01 dc.b $02,$04,$08,$10,$20,$40,$80,$FF,$FE,$FC,$F8,$F0,$E0,$C0,$F3,$CD dc.b $C7,$09,$3E,$2B,$32,$00,$40,$00,$3E,$80,$32,$01,$40 Z80_0x110D: dc.b $3E,((SegaPCMBank>>$0F)) dc.b $CD dc.w (((Z80BankSwitch&$1FFF)>>$08)|((Z80BankSwitch&$1FFF)<<$08))&$FFFF dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00 dc.b $21 dc.w (((SegaSnd&$FFFF)|$8000>>$08)|((SegaSnd&$FFFF)|$8000<<$08))&$FFFF dc.b $11,$2F,$5E dc.b $3E,$2A,$32,$00,$40,$00,$7E,$32,$01,$40,$3A,$0A,$1C,$FE,$FE dc.b $28,$0C,$00,$00,$06,$0C,$10,$FE,$23,$1B,$7A,$B3,$20,$E9,$AF,$32 dc.b $3F,$1C,$21,$0D,$1C,$CD,$D3,$09,$C3,$62,$10,$FF Z80_0x114C: dc.b $21,$00,$60 dc.b $77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77,$0F,$77 dc.b $AF,$77 dc.b $C3,$82,$00 Z80BankSwitch0: Z80_0x1170: dc.b $21,$00,$60 dc.b $77 dc.b $1F dc.b $77 dc.b $1F dc.b $77 dc.b $1F dc.b $77 dc.b $AF dc.b $16,$01 dc.b $72 dc.b $77 dc.b $77 dc.b $77 dc.b $77 dc.b $C9 Z80BankSwitch: dc.b $21, $00, $60 dc.b $77 dc.b $1F dc.b $77 dc.b $1F dc.b $77 dc.b $1F dc.b $77 dc.b $1F dc.b $77 dc.b $1F dc.b $77 dc.b $1F dc.b $77 dc.b $1F dc.b $77 dc.b $1F dc.b $77 dc.b $C9 DriverDataEnd:

-------------------------------------------------------------------------------
Filler to align pointers at 1300h in Z80 Ram

dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.b 0,0,0,0,0 DriverPointers: dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF dc.w (((UniversalVoiceBank&$1FFF)>>$08)|((UniversalVoiceBank&$1FFF)<<$08))&$FFFF dc.w (((MusicPointers&$1FFF)>>$08)|((MusicPointers&$1FFF)<<$08))&$FFFF dc.w (((SndPointers&$1FFF)>>$08)|((SndPointers&$1FFF)<<$08))&$FFFF dc.w (((PSGNoisePointers&$1FFF)>>$08)|((PSGNoisePointers&$1FFF)<<$08))&$FFFF dc.w (((PSGTonePointers&$1FFF)>>$08)|((PSGTonePointers&$1FFF)<<$08))&$FFFF dc.w $3300

credit goes to Varion Icaria for finding this index

PSGNoisePointers: dc.w (((PSGN_0&$1FFF)>>$08)|((PSGN_0&$1FFF)<<$08))&$FFFF dc.w (((PSGN_1&$1FFF)>>$08)|((PSGN_1&$1FFF)<<$08))&$FFFF dc.w (((PSGN_2&$1FFF)>>$08)|((PSGN_2&$1FFF)<<$08))&$FFFF dc.w (((PSGN_3&$1FFF)>>$08)|((PSGN_3&$1FFF)<<$08))&$FFFF dc.w (((PSGN_4&$1FFF)>>$08)|((PSGN_4&$1FFF)<<$08))&$FFFF dc.w (((PSGN_5&$1FFF)>>$08)|((PSGN_5&$1FFF)<<$08))&$FFFF dc.w (((PSGN_6&$1FFF)>>$08)|((PSGN_6&$1FFF)<<$08))&$FFFF dc.w (((PSGN_7&$1FFF)>>$08)|((PSGN_7&$1FFF)<<$08))&$FFFF

PSGN_1: binclude sound/PSGN1.bin PSGN_0: binclude sound/PSGN0.bin PSGN_2: binclude sound/PSGN2.bin PSGN_3: binclude sound/PSGN3.bin PSGN_4: binclude sound/PSGN4.bin PSGN_5: binclude sound/PSGN5.bin PSGN_6: binclude sound/PSGN6.bin PSGN_7: binclude sound/PSGN7.bin

credit goes to Varion Icaria for finding this index

PSGTonePointers: dc.w (((PSGT_00&$1FFF)>>$08)|((PSGT_00&$1FFF)<<$08))&$FFFF dc.w (((PSGT_01&$1FFF)>>$08)|((PSGT_01&$1FFF)<<$08))&$FFFF dc.w (((PSGT_02&$1FFF)>>$08)|((PSGT_02&$1FFF)<<$08))&$FFFF dc.w (((PSGT_03&$1FFF)>>$08)|((PSGT_03&$1FFF)<<$08))&$FFFF dc.w (((PSGT_04&$1FFF)>>$08)|((PSGT_04&$1FFF)<<$08))&$FFFF dc.w (((PSGT_05&$1FFF)>>$08)|((PSGT_05&$1FFF)<<$08))&$FFFF dc.w (((PSGT_06&$1FFF)>>$08)|((PSGT_06&$1FFF)<<$08))&$FFFF dc.w (((PSGT_07&$1FFF)>>$08)|((PSGT_07&$1FFF)<<$08))&$FFFF dc.w (((PSGT_08&$1FFF)>>$08)|((PSGT_08&$1FFF)<<$08))&$FFFF dc.w (((PSGT_09&$1FFF)>>$08)|((PSGT_09&$1FFF)<<$08))&$FFFF dc.w (((PSGT_0A&$1FFF)>>$08)|((PSGT_0A&$1FFF)<<$08))&$FFFF dc.w (((PSGT_0B&$1FFF)>>$08)|((PSGT_0B&$1FFF)<<$08))&$FFFF dc.w (((PSGT_0C&$1FFF)>>$08)|((PSGT_0C&$1FFF)<<$08))&$FFFF dc.w (((PSGT_0D&$1FFF)>>$08)|((PSGT_0D&$1FFF)<<$08))&$FFFF dc.w (((PSGT_0E&$1FFF)>>$08)|((PSGT_0E&$1FFF)<<$08))&$FFFF dc.w (((PSGT_0F&$1FFF)>>$08)|((PSGT_0F&$1FFF)<<$08))&$FFFF dc.w (((PSGT_10&$1FFF)>>$08)|((PSGT_10&$1FFF)<<$08))&$FFFF dc.w (((PSGT_11&$1FFF)>>$08)|((PSGT_11&$1FFF)<<$08))&$FFFF dc.w (((PSGT_12&$1FFF)>>$08)|((PSGT_12&$1FFF)<<$08))&$FFFF dc.w (((PSGT_13&$1FFF)>>$08)|((PSGT_13&$1FFF)<<$08))&$FFFF dc.w (((PSGT_14&$1FFF)>>$08)|((PSGT_14&$1FFF)<<$08))&$FFFF dc.w (((PSGT_15&$1FFF)>>$08)|((PSGT_15&$1FFF)<<$08))&$FFFF dc.w (((PSGT_16&$1FFF)>>$08)|((PSGT_16&$1FFF)<<$08))&$FFFF dc.w (((PSGT_17&$1FFF)>>$08)|((PSGT_17&$1FFF)<<$08))&$FFFF dc.w (((PSGT_18&$1FFF)>>$08)|((PSGT_18&$1FFF)<<$08))&$FFFF dc.w (((PSGT_19&$1FFF)>>$08)|((PSGT_19&$1FFF)<<$08))&$FFFF dc.w (((PSGT_1A&$1FFF)>>$08)|((PSGT_1A&$1FFF)<<$08))&$FFFF dc.w (((PSGT_1B&$1FFF)>>$08)|((PSGT_1B&$1FFF)<<$08))&$FFFF dc.w (((PSGT_1C&$1FFF)>>$08)|((PSGT_1C&$1FFF)<<$08))&$FFFF dc.w (((PSGT_1D&$1FFF)>>$08)|((PSGT_1D&$1FFF)<<$08))&$FFFF dc.w (((PSGT_1E&$1FFF)>>$08)|((PSGT_1E&$1FFF)<<$08))&$FFFF dc.w (((PSGT_1F&$1FFF)>>$08)|((PSGT_1F&$1FFF)<<$08))&$FFFF dc.w (((PSGT_20&$1FFF)>>$08)|((PSGT_20&$1FFF)<<$08))&$FFFF dc.w (((PSGT_21&$1FFF)>>$08)|((PSGT_21&$1FFF)<<$08))&$FFFF dc.w (((PSGT_22&$1FFF)>>$08)|((PSGT_22&$1FFF)<<$08))&$FFFF dc.w (((PSGT_23&$1FFF)>>$08)|((PSGT_23&$1FFF)<<$08))&$FFFF dc.w (((PSGT_24&$1FFF)>>$08)|((PSGT_24&$1FFF)<<$08))&$FFFF dc.w (((PSGT_25&$1FFF)>>$08)|((PSGT_25&$1FFF)<<$08))&$FFFF dc.w (((PSGT_26&$1FFF)>>$08)|((PSGT_26&$1FFF)<<$08))&$FFFF

PSGT_00: binclude sound/PSGT00.bin PSGT_01: binclude sound/PSGT01.bin PSGT_02: binclude sound/PSGT02.bin PSGT_03: binclude sound/PSGT03.bin PSGT_04: binclude sound/PSGT04.bin PSGT_05: binclude sound/PSGT05.bin PSGT_06: binclude sound/PSGT06.bin PSGT_07: binclude sound/PSGT07.bin PSGT_08: binclude sound/PSGT08.bin PSGT_09: binclude sound/PSGT09.bin PSGT_0A: binclude sound/PSGT0A.bin PSGT_0B: binclude sound/PSGT0B.bin PSGT_0C: binclude sound/PSGT0C.bin PSGT_0D: binclude sound/PSGT0D.bin PSGT_0E: binclude sound/PSGT0E.bin PSGT_0F: binclude sound/PSGT0F.bin PSGT_10: binclude sound/PSGT10.bin PSGT_11: binclude sound/PSGT11.bin PSGT_12: binclude sound/PSGT12.bin PSGT_13: binclude sound/PSGT13.bin PSGT_14: binclude sound/PSGT14.bin PSGT_15: binclude sound/PSGT15.bin PSGT_16: binclude sound/PSGT16.bin PSGT_17: binclude sound/PSGT17.bin PSGT_18: binclude sound/PSGT18.bin PSGT_19: binclude sound/PSGT19.bin PSGT_1A: binclude sound/PSGT1A.bin PSGT_1B: binclude sound/PSGT1B.bin PSGT_1C: binclude sound/PSGT1C.bin PSGT_1D: binclude sound/PSGT1D.bin PSGT_1E: binclude sound/PSGT1E.bin PSGT_1F: binclude sound/PSGT1F.bin PSGT_20: binclude sound/PSGT20.bin PSGT_21: binclude sound/PSGT21.bin PSGT_22: binclude sound/PSGT22.bin PSGT_23: binclude sound/PSGT23.bin PSGT_24: binclude sound/PSGT24.bin PSGT_25: binclude sound/PSGT25.bin PSGT_26: binclude sound/PSGT26.bin

MB_Ptr equ (Mini_Boss_Snd&$FFFF)|$8000 ; $C71A0 FB_Ptr equ (Final_Boss_Snd&$FFFF)|$8000 ; $C7A61 AIz1_Ptr equ (Angel_Island_1_Snd&$FFFF)|$8000 ; $C8000 AIz2_Ptr equ (Angel_Island_2_Snd&$FFFF)|$8000 ; $C9B6D HCz1_Ptr equ (Hidrocity_1_Snd&$FFFF)|$8000 ; $CB0BC HCz2_Ptr equ (Hidrocity_2_Snd&$FFFF)|$8000 ; $CC0C6 MGz1_Ptr equ (Marble_Garden_1_Snd&$FFFF)|$8000 ; $CD364 MGz2_Ptr equ (Marble_Garden_2_Snd&$FFFF)|$8000 ; $CD97B CNz2_Ptr equ (Carnival_Night_2_Snd&$FFFF)|$8000 ; $CDDA9 CNz1_Ptr equ (Carnival_Night_1_Snd&$FFFF)|$8000 ; $CE48F FBz1_Ptr equ (Flying_Battery_1_Snd&$FFFF)|$8000 ; $CEBF1 FBz2_Ptr equ (Flying_Battery_2_Snd&$FFFF)|$8000 ; $CF189 TDz_Ptr equ (The_Doomsday_Snd&$FFFF)|$8000 ; $CF6F0 Iz2_Ptr equ (Icecap_2_Snd&$FFFF)|$8000 ; $D0000 Iz1_Ptr equ (Icecap_1_Snd&$FFFF)|$8000 ; $D06AA LBz2_Ptr equ (Launch_Base_2_Snd&$FFFF)|$8000 ; $D0DC8 LBz1_Ptr equ (Launch_Base_1_Snd&$FFFF)|$8000 ; $D1345 MHz1_Ptr equ (Mushroom_Hill_1_Snd&$FFFF)|$8000 ; $D17A7 MHz2_Ptr equ (Mushroom_Hill_2_Snd&$FFFF)|$8000 ; $D1DAF Sz1_Ptr equ (Sandopolis_1_Snd&$FFFF)|$8000 ; $D2331 Sz2_Ptr equ (Sandopolis_2_Snd&$FFFF)|$8000 ; $D299B LRz1_Ptr equ (Lava_Reef_1_Snd&$FFFF)|$8000 ; $D2F8E LRz2_Ptr equ (Lava_Reef_2_Snd&$FFFF)|$8000 ; $D399C SCz_Ptr equ (Sky_Sanctuary_Snd&$FFFF)|$8000 ; $D4B29 DEz1_Ptr equ (Death_Egg_1_Snd&$FFFF)|$8000 ; $D4F4F DEz2_Ptr equ (Death_Egg_2_Snd&$FFFF)|$8000 ; $D543A MB_SK_Ptr equ (Mini_Boss_SK_Snd&$FFFF)|$8000 ; $D584C Boss_Ptr equ (Boss_Snd&$FFFF)|$8000 ; $D5B7C GS_BS_Ptr equ (Glowing_Spheres_Bonus_Stage_snd&$FFFF)|$8000 ; $D6078 SS_Ptr equ (Special_Stage_Snd&$FFFF)|$8000 ; $D65DB LR_Ptr equ (Level_Results_Snd&$FFFF)|$8000 ; $D6E73 Menu_Ptr equ (Menu_Snd&$FFFF)|$8000 ; $D7027 SM_BS_Ptr equ (Slot_Machine_Bonus_Stage_snd&$FFFF)|$8000 ; $D8000 GBM_BS_Ptr equ (Gum_Ball_Machine_Bonus_Stage_snd&$FFFF)|$8000 ; $D8AE8 KTE_Ptr equ (Knuckles_Theme_Snd&$FFFF)|$8000 ; $D97FD ALz_Ptr equ (Azure_Lake_Snd&$FFFF)|$8000 ; $D99F7 BPz_Ptr equ (Balloon_Park_Snd&$FFFF)|$8000 ; $DA4FD DPz_Ptr equ (Desert_Palace_Snd&$FFFF)|$8000 ; $DB0EC CGz_Ptr equ (Chrome_Gadget_Snd&$FFFF)|$8000 ; $DC324 EMz_Ptr equ (Endless_Mine_Snd&$FFFF)|$8000 ; $DDA47 TS_Ptr equ (Title_Screen_Snd&$FFFF)|$8000 ; $DE18F Credits_Ptr equ (Credits_Snd&$FFFF)|$8000 ; $DE587 TGOvr_Ptr equ (Time_Game_Over_Snd&$FFFF)|$8000 ; $DEA20 Continue_Ptr equ (Continue_Snd&$FFFF)|$8000 ; $DEC7B _1_Up_Ptr equ (Extra_Life_Snd&$FFFF)|$8000 ; $DF095 Emerald_Ptr equ (Emerald_Snd&$FFFF)|$8000 ; $DF298 Invcblty_Ptr equ (Invencibility_Snd&$FFFF)|$8000 ; $DF364 _2p_Menu_Ptr equ (Competition_Menu_Snd&$FFFF)|$8000 ; $DF5E4 UT_Ptr equ (Underwater_Timming_Snd&$FFFF)|$8000 ; $DFABE PbS_Ptr equ (Presented_by_SEGA_Snd&$FFFF)|$8000 ; $DFBFE

Sfx_34_Ptr equ (Sfx_34_Snd&$FFFF)|$8000 ; $FDE30 Sfx_35_Ptr equ (Sfx_35_Snd&$FFFF)|$8000 ; $FDE5E Sfx_36_Ptr equ (Sfx_36_Snd&$FFFF)|$8000 ; $FDE6F Sfx_37_Ptr equ (Sfx_37_Snd&$FFFF)|$8000 ; $FDEA1 Sfx_38_Ptr equ (Sfx_38_Snd&$FFFF)|$8000 ; $FDEC5 Sfx_39_Ptr equ (Sfx_39_Snd&$FFFF)|$8000 ; $FDEF4 Sfx_3A_Ptr equ (Sfx_3A_Snd&$FFFF)|$8000 ; $FDF2A Sfx_3B_Ptr equ (Sfx_3B_Snd&$FFFF)|$8000 ; $FDF6B Sfx_3C_Ptr equ (Sfx_3C_Snd&$FFFF)|$8000 ; $FDF96 Sfx_3D_Ptr equ (Sfx_3D_Snd&$FFFF)|$8000 ; $FDFE5 Sfx_3E_Ptr equ (Sfx_3E_Snd&$FFFF)|$8000 ; $FE023 Sfx_3F_Ptr equ (Sfx_3F_Snd&$FFFF)|$8000 ; $FE05D Sfx_40_Ptr equ (Sfx_40_Snd&$FFFF)|$8000 ; $FE088 Sfx_41_Ptr equ (Sfx_41_Snd&$FFFF)|$8000 ; $FE0AB Sfx_42_Ptr equ (Sfx_42_Snd&$FFFF)|$8000 ; $FE0CE Sfx_43_Ptr equ (Sfx_43_Snd&$FFFF)|$8000 ; $FE0F1 Sfx_44_Ptr equ (Sfx_44_Snd&$FFFF)|$8000 ; $FE109 Sfx_45_Ptr equ (Sfx_45_Snd&$FFFF)|$8000 ; $FE122 Sfx_46_Ptr equ (Sfx_46_Snd&$FFFF)|$8000 ; $FE14F Sfx_47_Ptr equ (Sfx_47_Snd&$FFFF)|$8000 ; $FE177 Sfx_48_Ptr equ (Sfx_48_Snd&$FFFF)|$8000 ; $FE1A4 Sfx_49_Ptr equ (Sfx_49_Snd&$FFFF)|$8000 ; $FE1C4 Sfx_4A_Ptr equ (Sfx_4A_Snd&$FFFF)|$8000 ; $FE1DE Sfx_4B_Ptr equ (Sfx_4B_Snd&$FFFF)|$8000 ; $FE206 Sfx_4C_Ptr equ (Sfx_4C_Snd&$FFFF)|$8000 ; $FE22E Sfx_4D_Ptr equ (Sfx_4D_Snd&$FFFF)|$8000 ; $FE278 Sfx_4E_Ptr equ (Sfx_4E_Snd&$FFFF)|$8000 ; $FE2A2 Sfx_4F_Ptr equ (Sfx_4F_Snd&$FFFF)|$8000 ; $FE2CF Sfx_50_Ptr equ (Sfx_50_Snd&$FFFF)|$8000 ; $FE313 Sfx_51_Ptr equ (Sfx_51_Snd&$FFFF)|$8000 ; $FE322 Sfx_52_Ptr equ (Sfx_52_Snd&$FFFF)|$8000 ; $FE35A Sfx_53_Ptr equ (Sfx_53_Snd&$FFFF)|$8000 ; $FE38B Sfx_54_Ptr equ (Sfx_54_Snd&$FFFF)|$8000 ; $FE3A8 Sfx_55_Ptr equ (Sfx_55_Snd&$FFFF)|$8000 ; $FE3E8 Sfx_56_Ptr equ (Sfx_56_Snd&$FFFF)|$8000 ; $FE42B Sfx_57_Ptr equ (Sfx_57_Snd&$FFFF)|$8000 ; $FE453 Sfx_58_Ptr equ (Sfx_58_Snd&$FFFF)|$8000 ; $FE463 Sfx_59_Ptr equ (Sfx_59_Snd&$FFFF)|$8000 ; $FE481 Sfx_5A_Ptr equ (Sfx_5A_Snd&$FFFF)|$8000 ; $FE49A Sfx_5B_Ptr equ (Sfx_5B_Snd&$FFFF)|$8000 ; $FE4F6 Sfx_5C_Ptr equ (Sfx_5C_Snd&$FFFF)|$8000 ; $FE523 Sfx_5D_Ptr equ (Sfx_5D_Snd&$FFFF)|$8000 ; $FE530 Sfx_5E_Ptr equ (Sfx_5E_Snd&$FFFF)|$8000 ; $FE558 Sfx_5F_Ptr equ (Sfx_5F_Snd&$FFFF)|$8000 ; $FE581 Sfx_60_Ptr equ (Sfx_60_Snd&$FFFF)|$8000 ; $FE5B2 Sfx_61_Ptr equ (Sfx_61_Snd&$FFFF)|$8000 ; $FE5DA Sfx_62_Ptr equ (Sfx_62_Snd&$FFFF)|$8000 ; $FE61B Sfx_63_Ptr equ (Sfx_63_Snd&$FFFF)|$8000 ; $FE64C Sfx_64_Ptr equ (Sfx_64_Snd&$FFFF)|$8000 ; $FE662 Sfx_65_Ptr equ (Sfx_65_Snd&$FFFF)|$8000 ; $FE68C Sfx_66_Ptr equ (Sfx_66_Snd&$FFFF)|$8000 ; $FE6AB Sfx_67_Ptr equ (Sfx_67_Snd&$FFFF)|$8000 ; $FE6E1 Sfx_68_Ptr equ (Sfx_68_Snd&$FFFF)|$8000 ; $FE730 Sfx_69_Ptr equ (Sfx_69_Snd&$FFFF)|$8000 ; $FE75C Sfx_6A_Ptr equ (Sfx_6A_Snd&$FFFF)|$8000 ; $FE7B0 Sfx_6B_Ptr equ (Sfx_6B_Snd&$FFFF)|$8000 ; $FE7DD Sfx_6C_Ptr equ (Sfx_6C_Snd&$FFFF)|$8000 ; $FE811 Sfx_6D_Ptr equ (Sfx_6D_Snd&$FFFF)|$8000 ; $FE823 Sfx_6E_Ptr equ (Sfx_6E_Snd&$FFFF)|$8000 ; $FE833 Sfx_6F_Ptr equ (Sfx_6F_Snd&$FFFF)|$8000 ; $FE852 Sfx_70_Ptr equ (Sfx_70_Snd&$FFFF)|$8000 ; $FE886 Sfx_71_Ptr equ (Sfx_71_Snd&$FFFF)|$8000 ; $FE896 Sfx_72_Ptr equ (Sfx_72_Snd&$FFFF)|$8000 ; $FE8E0 Sfx_73_Ptr equ (Sfx_73_Snd&$FFFF)|$8000 ; $FE8EA Sfx_74_Ptr equ (Sfx_74_Snd&$FFFF)|$8000 ; $FE917 Sfx_75_Ptr equ (Sfx_75_Snd&$FFFF)|$8000 ; $FE94B Sfx_76_Ptr equ (Sfx_76_Snd&$FFFF)|$8000 ; $FE978 Sfx_77_Ptr equ (Sfx_77_Snd&$FFFF)|$8000 ; $FE9A7 Sfx_78_Ptr equ (Sfx_78_Snd&$FFFF)|$8000 ; $FE9D1 Sfx_79_Ptr equ (Sfx_79_Snd&$FFFF)|$8000 ; $FEA1B Sfx_7A_Ptr equ (Sfx_7A_Snd&$FFFF)|$8000 ; $FEA48 Sfx_7B_Ptr equ (Sfx_7B_Snd&$FFFF)|$8000 ; $FEA93 Sfx_7C_Ptr equ (Sfx_7C_Snd&$FFFF)|$8000 ; $FEAC7 Sfx_7D_Ptr equ (Sfx_7D_Snd&$FFFF)|$8000 ; $FEAF7 Sfx_7E_Ptr equ (Sfx_7E_Snd&$FFFF)|$8000 ; $FEB28 Sfx_7F_Ptr equ (Sfx_7F_Snd&$FFFF)|$8000 ; $FEB55 Sfx_80_Ptr equ (Sfx_80_Snd&$FFFF)|$8000 ; $FEB6D Sfx_81_Ptr equ (Sfx_81_Snd&$FFFF)|$8000 ; $FEB8B Sfx_82_Ptr equ (Sfx_82_Snd&$FFFF)|$8000 ; $FEBBA Sfx_83_Ptr equ (Sfx_83_Snd&$FFFF)|$8000 ; $FEC05 Sfx_84_Ptr equ (Sfx_84_Snd&$FFFF)|$8000 ; $FEC32 Sfx_85_Ptr equ (Sfx_85_Snd&$FFFF)|$8000 ; $FEC7E Sfx_86_Ptr equ (Sfx_86_Snd&$FFFF)|$8000 ; $FECAB Sfx_87_Ptr equ (Sfx_87_Snd&$FFFF)|$8000 ; $FECD8 Sfx_88_Ptr equ (Sfx_88_Snd&$FFFF)|$8000 ; $FED05 Sfx_89_Ptr equ (Sfx_89_Snd&$FFFF)|$8000 ; $FED3B Sfx_8A_Ptr equ (Sfx_8A_Snd&$FFFF)|$8000 ; $FED68 Sfx_8B_Ptr equ (Sfx_8B_Snd&$FFFF)|$8000 ; $FED75 Sfx_8C_Ptr equ (Sfx_8C_Snd&$FFFF)|$8000 ; $FEDA9 Sfx_8D_Ptr equ (Sfx_8D_Snd&$FFFF)|$8000 ; $FEDDF Sfx_8E_Ptr equ (Sfx_8E_Snd&$FFFF)|$8000 ; $FEE10 Sfx_8F_Ptr equ (Sfx_8F_Snd&$FFFF)|$8000 ; $FEE2A Sfx_90_Ptr equ (Sfx_90_Snd&$FFFF)|$8000 ; $FEE5B Sfx_91_Ptr equ (Sfx_91_Snd&$FFFF)|$8000 ; $FEE91 Sfx_92_Ptr equ (Sfx_92_Snd&$FFFF)|$8000 ; $FEEC3 Sfx_93_Ptr equ (Sfx_93_Snd&$FFFF)|$8000 ; $FEEF9 Sfx_94_Ptr equ (Sfx_94_Snd&$FFFF)|$8000 ; $FEF2D Sfx_95_Ptr equ (Sfx_95_Snd&$FFFF)|$8000 ; $FEF77 Sfx_96_Ptr equ (Sfx_96_Snd&$FFFF)|$8000 ; $FEFA6 Sfx_97_Ptr equ (Sfx_97_Snd&$FFFF)|$8000 ; $FEFD5 Sfx_98_Ptr equ (Sfx_98_Snd&$FFFF)|$8000 ; $FF009 Sfx_99_Ptr equ (Sfx_99_Snd&$FFFF)|$8000 ; $FF01C Sfx_9A_Ptr equ (Sfx_9A_Snd&$FFFF)|$8000 ; $FF068 Sfx_9B_Ptr equ (Sfx_9B_Snd&$FFFF)|$8000 ; $FF090 Sfx_9C_Ptr equ (Sfx_9C_Snd&$FFFF)|$8000 ; $FF0AF Sfx_9D_Ptr equ (Sfx_9D_Snd&$FFFF)|$8000 ; $FF114 Sfx_9E_Ptr equ (Sfx_9E_Snd&$FFFF)|$8000 ; $FF14B Sfx_9F_Ptr equ (Sfx_9F_Snd&$FFFF)|$8000 ; $FF17F Sfx_A0_Ptr equ (Sfx_A0_Snd&$FFFF)|$8000 ; $FF1C0 Sfx_A1_Ptr equ (Sfx_A1_Snd&$FFFF)|$8000 ; $FF1FC Sfx_A2_Ptr equ (Sfx_A2_Snd&$FFFF)|$8000 ; $FF214 Sfx_A3_Ptr equ (Sfx_A3_Snd&$FFFF)|$8000 ; $FF23C Sfx_A4_Ptr equ (Sfx_A4_Snd&$FFFF)|$8000 ; $FF274 Sfx_A5_Ptr equ (Sfx_A5_Snd&$FFFF)|$8000 ; $FF2A1 Sfx_A6_Ptr equ (Sfx_A6_Snd&$FFFF)|$8000 ; $FF2CE Sfx_A7_Ptr equ (Sfx_A7_Snd&$FFFF)|$8000 ; $FF2FB Sfx_A8_Ptr equ (Sfx_A8_Snd&$FFFF)|$8000 ; $FF313 Sfx_A9_Ptr equ (Sfx_A9_Snd&$FFFF)|$8000 ; $FF33B Sfx_AA_Ptr equ (Sfx_AA_Snd&$FFFF)|$8000 ; $FF365 Sfx_AB_Ptr equ (Sfx_AB_Snd&$FFFF)|$8000 ; $FF38F Sfx_AC_Ptr equ (Sfx_AC_Snd&$FFFF)|$8000 ; $FF3EA Sfx_AD_Ptr equ (Sfx_AD_Snd&$FFFF)|$8000 ; $FF42A Sfx_AE_Ptr equ (Sfx_AE_Snd&$FFFF)|$8000 ; $FF49C Sfx_AF_Ptr equ (Sfx_AF_Snd&$FFFF)|$8000 ; $FF4AB Sfx_B0_Ptr equ (Sfx_B0_Snd&$FFFF)|$8000 ; $FF4DA Sfx_B1_Ptr equ (Sfx_B1_Snd&$FFFF)|$8000 ; $FF507 Sfx_B2_Ptr equ (Sfx_B2_Snd&$FFFF)|$8000 ; $FF582 Sfx_B3_Ptr equ (Sfx_B3_Snd&$FFFF)|$8000 ; $FF5D7 Sfx_B4_Ptr equ (Sfx_B4_Snd&$FFFF)|$8000 ; $FF603 Sfx_B5_Ptr equ (Sfx_B5_Snd&$FFFF)|$8000 ; $FF67D Sfx_B6_Ptr equ (Sfx_B6_Snd&$FFFF)|$8000 ; $FF6AA Sfx_B7_Ptr equ (Sfx_B7_Snd&$FFFF)|$8000 ; $FF6D2 Sfx_B8_Ptr equ (Sfx_B8_Snd&$FFFF)|$8000 ; $FF713 Sfx_B9_Ptr equ (Sfx_B9_Snd&$FFFF)|$8000 ; $FF745 Sfx_BA_Ptr equ (Sfx_BA_Snd&$FFFF)|$8000 ; $FF76C Sfx_BB_Ptr equ (Sfx_BB_Snd&$FFFF)|$8000 ; $FF794 Sfx_BC_Ptr equ (Sfx_BC_Snd&$FFFF)|$8000 ; $FF7BE Sfx_BD_Ptr equ (Sfx_BD_Snd&$FFFF)|$8000 ; $FF7CE Sfx_BE_Ptr equ (Sfx_BE_Snd&$FFFF)|$8000 ; $FF7F9 Sfx_BF_Ptr equ (Sfx_BF_Snd&$FFFF)|$8000 ; $FF837 Sfx_C0_Ptr equ (Sfx_C0_Snd&$FFFF)|$8000 ; $FF86A Sfx_C1_Ptr equ (Sfx_C1_Snd&$FFFF)|$8000 ; $FF89C Sfx_C2_Ptr equ (Sfx_C2_Snd&$FFFF)|$8000 ; $FF8D1 Sfx_C3_Ptr equ (Sfx_C3_Snd&$FFFF)|$8000 ; $FF907 Sfx_C4_Ptr equ (Sfx_C4_Snd&$FFFF)|$8000 ; $FF91E Sfx_C5_Ptr equ (Sfx_C5_Snd&$FFFF)|$8000 ; $FF94E Sfx_C6_Ptr equ (Sfx_C6_Snd&$FFFF)|$8000 ; $FF97E Sfx_C7_Ptr equ (Sfx_C7_Snd&$FFFF)|$8000 ; $FF9B7 Sfx_C8_Ptr equ (Sfx_C8_Snd&$FFFF)|$8000 ; $FF9F2 Sfx_C9_Ptr equ (Sfx_C9_Snd&$FFFF)|$8000 ; $FFA21 Sfx_CA_Ptr equ (Sfx_CA_Snd&$FFFF)|$8000 ; $FFA2B Sfx_CB_Ptr equ (Sfx_CB_Snd&$FFFF)|$8000 ; $FFA66 Sfx_CC_Ptr equ (Sfx_CC_Snd&$FFFF)|$8000 ; $FFA9C Sfx_CD_Ptr equ (Sfx_CD_Snd&$FFFF)|$8000 ; $FFAD7 Sfx_CE_Ptr equ (Sfx_CE_Snd&$FFFF)|$8000 ; $FFB12 Sfx_CF_Ptr equ (Sfx_CF_Snd&$FFFF)|$8000 ; $FFB45 Sfx_D0_Ptr equ (Sfx_D0_Snd&$FFFF)|$8000 ; $FFB60 Sfx_D1_Ptr equ (Sfx_D1_Snd&$FFFF)|$8000 ; $FFB6A Sfx_D2_Ptr equ (Sfx_D2_Snd&$FFFF)|$8000 ; $FFBA1 Sfx_D3_Ptr equ (Sfx_D3_Snd&$FFFF)|$8000 ; $FFBBE Sfx_D4_Ptr equ (Sfx_D4_Snd&$FFFF)|$8000 ; $FFBF4 Sfx_D5_Ptr equ (Sfx_D5_Snd&$FFFF)|$8000 ; $FFC2D Sfx_D6_Ptr equ (Sfx_D6_Snd&$FFFF)|$8000 ; $FFC64 Sfx_D7_Ptr equ (Sfx_D7_Snd&$FFFF)|$8000 ; $FFC9D Sfx_D8_Ptr equ (Sfx_D8_Snd&$FFFF)|$8000 ; $FFCCE Sfx_D9_Ptr equ (Sfx_D9_Snd&$FFFF)|$8000 ; $FFCFF Sfx_DA_Ptr equ (Sfx_DA_Snd&$FFFF)|$8000 ; $FFD32 Sfx_DB_Ptr equ (Sfx_DB_Snd&$FFFF)|$8000 ; $FFD62 Sfx_DC_Ptr equ (Sfx_DC_Snd&$FFFF)|$8000 ; $FFD94

MusicPointers: dc.w ((AIz1_Ptr>>$08)|(AIz1_Ptr<<$08))&$FFFF dc.w ((AIz2_Ptr>>$08)|(AIz2_Ptr<<$08))&$FFFF dc.w ((HCz1_Ptr>>$08)|(HCz1_Ptr<<$08))&$FFFF dc.w ((HCz2_Ptr>>$08)|(HCz2_Ptr<<$08))&$FFFF dc.w ((MGz1_Ptr>>$08)|(MGz1_Ptr<<$08))&$FFFF dc.w ((MGz2_Ptr>>$08)|(MGz2_Ptr<<$08))&$FFFF dc.w ((CNz1_Ptr>>$08)|(CNz1_Ptr<<$08))&$FFFF dc.w ((CNz2_Ptr>>$08)|(CNz2_Ptr<<$08))&$FFFF dc.w ((FBz1_Ptr>>$08)|(FBz1_Ptr<<$08))&$FFFF dc.w ((FBz2_Ptr>>$08)|(FBz2_Ptr<<$08))&$FFFF dc.w ((Iz1_Ptr>>$08)|(Iz1_Ptr<<$08))&$FFFF dc.w ((Iz2_Ptr>>$08)|(Iz2_Ptr<<$08))&$FFFF dc.w ((LBz1_Ptr>>$08)|(LBz1_Ptr<<$08))&$FFFF dc.w ((LBz2_Ptr>>$08)|(LBz2_Ptr<<$08))&$FFFF dc.w ((MHz1_Ptr>>$08)|(MHz1_Ptr<<$08))&$FFFF dc.w ((MHz2_Ptr>>$08)|(MHz2_Ptr<<$08))&$FFFF dc.w ((Sz1_Ptr>>$08)|(Sz1_Ptr<<$08))&$FFFF dc.w ((Sz2_Ptr>>$08)|(Sz2_Ptr<<$08))&$FFFF dc.w ((LRz1_Ptr>>$08)|(LRz1_Ptr<<$08))&$FFFF dc.w ((LRz2_Ptr>>$08)|(LRz2_Ptr<<$08))&$FFFF dc.w ((SCz_Ptr>>$08)|(SCz_Ptr<<$08))&$FFFF dc.w ((DEz1_Ptr>>$08)|(DEz1_Ptr<<$08))&$FFFF dc.w ((DEz2_Ptr>>$08)|(DEz2_Ptr<<$08))&$FFFF dc.w ((MB_SK_Ptr>>$08)|(MB_SK_Ptr<<$08))&$FFFF dc.w ((Boss_Ptr>>$08)|(Boss_Ptr<<$08))&$FFFF dc.w ((TDz_Ptr>>$08)|(TDz_Ptr<<$08))&$FFFF dc.w ((GS_BS_Ptr>>$08)|(GS_BS_Ptr<<$08))&$FFFF dc.w ((SS_Ptr>>$08)|(SS_Ptr<<$08))&$FFFF dc.w ((SM_BS_Ptr>>$08)|(SM_BS_Ptr<<$08))&$FFFF dc.w ((GBM_BS_Ptr>>$08)|(GBM_BS_Ptr<<$08))&$FFFF dc.w ((KTE_Ptr>>$08)|(KTE_Ptr<<$08))&$FFFF dc.w ((ALz_Ptr>>$08)|(ALz_Ptr<<$08))&$FFFF dc.w ((BPz_Ptr>>$08)|(BPz_Ptr<<$08))&$FFFF dc.w ((DPz_Ptr>>$08)|(DPz_Ptr<<$08))&$FFFF dc.w ((CGz_Ptr>>$08)|(CGz_Ptr<<$08))&$FFFF dc.w ((EMz_Ptr>>$08)|(EMz_Ptr<<$08))&$FFFF dc.w ((TS_Ptr>>$08)|(TS_Ptr<<$08))&$FFFF dc.w ((Credits_Ptr>>$08)|(Credits_Ptr<<$08))&$FFFF dc.w ((TGOvr_Ptr>>$08)|(TGOvr_Ptr<<$08))&$FFFF dc.w ((Continue_Ptr>>$08)|(Continue_Ptr<<$08))&$FFFF dc.w ((LR_Ptr>>$08)|(LR_Ptr<<$08))&$FFFF dc.w ((_1_Up_Ptr>>$08)|(_1_Up_Ptr<<$08))&$FFFF dc.w ((Emerald_Ptr>>$08)|(Emerald_Ptr<<$08))&$FFFF dc.w ((Invcblty_Ptr>>$08)|(Invcblty_Ptr<<$08))&$FFFF dc.w ((_2p_Menu_Ptr>>$08)|(_2p_Menu_Ptr<<$08))&$FFFF dc.w ((MB_Ptr>>$08)|(MB_Ptr<<$08))&$FFFF dc.w ((Menu_Ptr>>$08)|(Menu_Ptr<<$08))&$FFFF dc.w ((FB_Ptr>>$08)|(FB_Ptr<<$08))&$FFFF dc.w ((UT_Ptr>>$08)|(UT_Ptr<<$08))&$FFFF dc.w ((PbS_Ptr>>$08)|(PbS_Ptr<<$08))&$FFFF

SndPointers: dc.w ((Sfx_34_Ptr>>$08)|(Sfx_34_Ptr<<$08))&$FFFF dc.w ((Sfx_35_Ptr>>$08)|(Sfx_35_Ptr<<$08))&$FFFF dc.w ((Sfx_36_Ptr>>$08)|(Sfx_36_Ptr<<$08))&$FFFF dc.w ((Sfx_37_Ptr>>$08)|(Sfx_37_Ptr<<$08))&$FFFF dc.w ((Sfx_38_Ptr>>$08)|(Sfx_38_Ptr<<$08))&$FFFF dc.w ((Sfx_39_Ptr>>$08)|(Sfx_39_Ptr<<$08))&$FFFF dc.w ((Sfx_3A_Ptr>>$08)|(Sfx_3A_Ptr<<$08))&$FFFF dc.w ((Sfx_3B_Ptr>>$08)|(Sfx_3B_Ptr<<$08))&$FFFF dc.w ((Sfx_3C_Ptr>>$08)|(Sfx_3C_Ptr<<$08))&$FFFF dc.w ((Sfx_3D_Ptr>>$08)|(Sfx_3D_Ptr<<$08))&$FFFF dc.w ((Sfx_3E_Ptr>>$08)|(Sfx_3E_Ptr<<$08))&$FFFF dc.w ((Sfx_3F_Ptr>>$08)|(Sfx_3F_Ptr<<$08))&$FFFF dc.w ((Sfx_40_Ptr>>$08)|(Sfx_40_Ptr<<$08))&$FFFF dc.w ((Sfx_41_Ptr>>$08)|(Sfx_41_Ptr<<$08))&$FFFF dc.w ((Sfx_42_Ptr>>$08)|(Sfx_42_Ptr<<$08))&$FFFF dc.w ((Sfx_43_Ptr>>$08)|(Sfx_43_Ptr<<$08))&$FFFF dc.w ((Sfx_44_Ptr>>$08)|(Sfx_44_Ptr<<$08))&$FFFF dc.w ((Sfx_45_Ptr>>$08)|(Sfx_45_Ptr<<$08))&$FFFF dc.w ((Sfx_46_Ptr>>$08)|(Sfx_46_Ptr<<$08))&$FFFF dc.w ((Sfx_47_Ptr>>$08)|(Sfx_47_Ptr<<$08))&$FFFF dc.w ((Sfx_48_Ptr>>$08)|(Sfx_48_Ptr<<$08))&$FFFF dc.w ((Sfx_49_Ptr>>$08)|(Sfx_49_Ptr<<$08))&$FFFF dc.w ((Sfx_4A_Ptr>>$08)|(Sfx_4A_Ptr<<$08))&$FFFF dc.w ((Sfx_4B_Ptr>>$08)|(Sfx_4B_Ptr<<$08))&$FFFF dc.w ((Sfx_4C_Ptr>>$08)|(Sfx_4C_Ptr<<$08))&$FFFF dc.w ((Sfx_4D_Ptr>>$08)|(Sfx_4D_Ptr<<$08))&$FFFF dc.w ((Sfx_4E_Ptr>>$08)|(Sfx_4E_Ptr<<$08))&$FFFF dc.w ((Sfx_4F_Ptr>>$08)|(Sfx_4F_Ptr<<$08))&$FFFF dc.w ((Sfx_50_Ptr>>$08)|(Sfx_50_Ptr<<$08))&$FFFF dc.w ((Sfx_51_Ptr>>$08)|(Sfx_51_Ptr<<$08))&$FFFF dc.w ((Sfx_52_Ptr>>$08)|(Sfx_52_Ptr<<$08))&$FFFF dc.w ((Sfx_53_Ptr>>$08)|(Sfx_53_Ptr<<$08))&$FFFF dc.w ((Sfx_54_Ptr>>$08)|(Sfx_54_Ptr<<$08))&$FFFF dc.w ((Sfx_55_Ptr>>$08)|(Sfx_55_Ptr<<$08))&$FFFF dc.w ((Sfx_56_Ptr>>$08)|(Sfx_56_Ptr<<$08))&$FFFF dc.w ((Sfx_57_Ptr>>$08)|(Sfx_57_Ptr<<$08))&$FFFF dc.w ((Sfx_58_Ptr>>$08)|(Sfx_58_Ptr<<$08))&$FFFF dc.w ((Sfx_59_Ptr>>$08)|(Sfx_59_Ptr<<$08))&$FFFF dc.w ((Sfx_5A_Ptr>>$08)|(Sfx_5A_Ptr<<$08))&$FFFF dc.w ((Sfx_5B_Ptr>>$08)|(Sfx_5B_Ptr<<$08))&$FFFF dc.w ((Sfx_5C_Ptr>>$08)|(Sfx_5C_Ptr<<$08))&$FFFF dc.w ((Sfx_5D_Ptr>>$08)|(Sfx_5D_Ptr<<$08))&$FFFF dc.w ((Sfx_5E_Ptr>>$08)|(Sfx_5E_Ptr<<$08))&$FFFF dc.w ((Sfx_5F_Ptr>>$08)|(Sfx_5F_Ptr<<$08))&$FFFF dc.w ((Sfx_60_Ptr>>$08)|(Sfx_60_Ptr<<$08))&$FFFF dc.w ((Sfx_61_Ptr>>$08)|(Sfx_61_Ptr<<$08))&$FFFF dc.w ((Sfx_62_Ptr>>$08)|(Sfx_62_Ptr<<$08))&$FFFF dc.w ((Sfx_63_Ptr>>$08)|(Sfx_63_Ptr<<$08))&$FFFF dc.w ((Sfx_64_Ptr>>$08)|(Sfx_64_Ptr<<$08))&$FFFF dc.w ((Sfx_65_Ptr>>$08)|(Sfx_65_Ptr<<$08))&$FFFF dc.w ((Sfx_66_Ptr>>$08)|(Sfx_66_Ptr<<$08))&$FFFF dc.w ((Sfx_67_Ptr>>$08)|(Sfx_67_Ptr<<$08))&$FFFF dc.w ((Sfx_68_Ptr>>$08)|(Sfx_68_Ptr<<$08))&$FFFF dc.w ((Sfx_69_Ptr>>$08)|(Sfx_69_Ptr<<$08))&$FFFF dc.w ((Sfx_6A_Ptr>>$08)|(Sfx_6A_Ptr<<$08))&$FFFF dc.w ((Sfx_6B_Ptr>>$08)|(Sfx_6B_Ptr<<$08))&$FFFF dc.w ((Sfx_6C_Ptr>>$08)|(Sfx_6C_Ptr<<$08))&$FFFF dc.w ((Sfx_6D_Ptr>>$08)|(Sfx_6D_Ptr<<$08))&$FFFF dc.w ((Sfx_6E_Ptr>>$08)|(Sfx_6E_Ptr<<$08))&$FFFF dc.w ((Sfx_6F_Ptr>>$08)|(Sfx_6F_Ptr<<$08))&$FFFF dc.w ((Sfx_70_Ptr>>$08)|(Sfx_70_Ptr<<$08))&$FFFF dc.w ((Sfx_71_Ptr>>$08)|(Sfx_71_Ptr<<$08))&$FFFF dc.w ((Sfx_72_Ptr>>$08)|(Sfx_72_Ptr<<$08))&$FFFF dc.w ((Sfx_73_Ptr>>$08)|(Sfx_73_Ptr<<$08))&$FFFF dc.w ((Sfx_74_Ptr>>$08)|(Sfx_74_Ptr<<$08))&$FFFF dc.w ((Sfx_75_Ptr>>$08)|(Sfx_75_Ptr<<$08))&$FFFF dc.w ((Sfx_76_Ptr>>$08)|(Sfx_76_Ptr<<$08))&$FFFF dc.w ((Sfx_77_Ptr>>$08)|(Sfx_77_Ptr<<$08))&$FFFF dc.w ((Sfx_78_Ptr>>$08)|(Sfx_78_Ptr<<$08))&$FFFF dc.w ((Sfx_79_Ptr>>$08)|(Sfx_79_Ptr<<$08))&$FFFF dc.w ((Sfx_7A_Ptr>>$08)|(Sfx_7A_Ptr<<$08))&$FFFF dc.w ((Sfx_7B_Ptr>>$08)|(Sfx_7B_Ptr<<$08))&$FFFF dc.w ((Sfx_7C_Ptr>>$08)|(Sfx_7C_Ptr<<$08))&$FFFF dc.w ((Sfx_7D_Ptr>>$08)|(Sfx_7D_Ptr<<$08))&$FFFF dc.w ((Sfx_7E_Ptr>>$08)|(Sfx_7E_Ptr<<$08))&$FFFF dc.w ((Sfx_7F_Ptr>>$08)|(Sfx_7F_Ptr<<$08))&$FFFF dc.w ((Sfx_80_Ptr>>$08)|(Sfx_80_Ptr<<$08))&$FFFF dc.w ((Sfx_81_Ptr>>$08)|(Sfx_81_Ptr<<$08))&$FFFF dc.w ((Sfx_82_Ptr>>$08)|(Sfx_82_Ptr<<$08))&$FFFF dc.w ((Sfx_83_Ptr>>$08)|(Sfx_83_Ptr<<$08))&$FFFF dc.w ((Sfx_84_Ptr>>$08)|(Sfx_84_Ptr<<$08))&$FFFF dc.w ((Sfx_85_Ptr>>$08)|(Sfx_85_Ptr<<$08))&$FFFF dc.w ((Sfx_86_Ptr>>$08)|(Sfx_86_Ptr<<$08))&$FFFF dc.w ((Sfx_87_Ptr>>$08)|(Sfx_87_Ptr<<$08))&$FFFF dc.w ((Sfx_88_Ptr>>$08)|(Sfx_88_Ptr<<$08))&$FFFF dc.w ((Sfx_89_Ptr>>$08)|(Sfx_89_Ptr<<$08))&$FFFF dc.w ((Sfx_8A_Ptr>>$08)|(Sfx_8A_Ptr<<$08))&$FFFF dc.w ((Sfx_8B_Ptr>>$08)|(Sfx_8B_Ptr<<$08))&$FFFF dc.w ((Sfx_8C_Ptr>>$08)|(Sfx_8C_Ptr<<$08))&$FFFF dc.w ((Sfx_8D_Ptr>>$08)|(Sfx_8D_Ptr<<$08))&$FFFF dc.w ((Sfx_8E_Ptr>>$08)|(Sfx_8E_Ptr<<$08))&$FFFF dc.w ((Sfx_8F_Ptr>>$08)|(Sfx_8F_Ptr<<$08))&$FFFF dc.w ((Sfx_90_Ptr>>$08)|(Sfx_90_Ptr<<$08))&$FFFF dc.w ((Sfx_91_Ptr>>$08)|(Sfx_91_Ptr<<$08))&$FFFF dc.w ((Sfx_92_Ptr>>$08)|(Sfx_92_Ptr<<$08))&$FFFF dc.w ((Sfx_93_Ptr>>$08)|(Sfx_93_Ptr<<$08))&$FFFF dc.w ((Sfx_94_Ptr>>$08)|(Sfx_94_Ptr<<$08))&$FFFF dc.w ((Sfx_95_Ptr>>$08)|(Sfx_95_Ptr<<$08))&$FFFF dc.w ((Sfx_96_Ptr>>$08)|(Sfx_96_Ptr<<$08))&$FFFF dc.w ((Sfx_97_Ptr>>$08)|(Sfx_97_Ptr<<$08))&$FFFF dc.w ((Sfx_98_Ptr>>$08)|(Sfx_98_Ptr<<$08))&$FFFF dc.w ((Sfx_99_Ptr>>$08)|(Sfx_99_Ptr<<$08))&$FFFF dc.w ((Sfx_9A_Ptr>>$08)|(Sfx_9A_Ptr<<$08))&$FFFF dc.w ((Sfx_9B_Ptr>>$08)|(Sfx_9B_Ptr<<$08))&$FFFF dc.w ((Sfx_9C_Ptr>>$08)|(Sfx_9C_Ptr<<$08))&$FFFF dc.w ((Sfx_9D_Ptr>>$08)|(Sfx_9D_Ptr<<$08))&$FFFF dc.w ((Sfx_9E_Ptr>>$08)|(Sfx_9E_Ptr<<$08))&$FFFF dc.w ((Sfx_9F_Ptr>>$08)|(Sfx_9F_Ptr<<$08))&$FFFF dc.w ((Sfx_A0_Ptr>>$08)|(Sfx_A0_Ptr<<$08))&$FFFF dc.w ((Sfx_A1_Ptr>>$08)|(Sfx_A1_Ptr<<$08))&$FFFF dc.w ((Sfx_A2_Ptr>>$08)|(Sfx_A2_Ptr<<$08))&$FFFF dc.w ((Sfx_A3_Ptr>>$08)|(Sfx_A3_Ptr<<$08))&$FFFF dc.w ((Sfx_A4_Ptr>>$08)|(Sfx_A4_Ptr<<$08))&$FFFF dc.w ((Sfx_A5_Ptr>>$08)|(Sfx_A5_Ptr<<$08))&$FFFF dc.w ((Sfx_A6_Ptr>>$08)|(Sfx_A6_Ptr<<$08))&$FFFF dc.w ((Sfx_A7_Ptr>>$08)|(Sfx_A7_Ptr<<$08))&$FFFF dc.w ((Sfx_A8_Ptr>>$08)|(Sfx_A8_Ptr<<$08))&$FFFF dc.w ((Sfx_A9_Ptr>>$08)|(Sfx_A9_Ptr<<$08))&$FFFF dc.w ((Sfx_AA_Ptr>>$08)|(Sfx_AA_Ptr<<$08))&$FFFF dc.w ((Sfx_AB_Ptr>>$08)|(Sfx_AB_Ptr<<$08))&$FFFF dc.w ((Sfx_AC_Ptr>>$08)|(Sfx_AC_Ptr<<$08))&$FFFF dc.w ((Sfx_AD_Ptr>>$08)|(Sfx_AD_Ptr<<$08))&$FFFF dc.w ((Sfx_AE_Ptr>>$08)|(Sfx_AE_Ptr<<$08))&$FFFF dc.w ((Sfx_AF_Ptr>>$08)|(Sfx_AF_Ptr<<$08))&$FFFF dc.w ((Sfx_B0_Ptr>>$08)|(Sfx_B0_Ptr<<$08))&$FFFF dc.w ((Sfx_B1_Ptr>>$08)|(Sfx_B1_Ptr<<$08))&$FFFF dc.w ((Sfx_B2_Ptr>>$08)|(Sfx_B2_Ptr<<$08))&$FFFF dc.w ((Sfx_B3_Ptr>>$08)|(Sfx_B3_Ptr<<$08))&$FFFF dc.w ((Sfx_B4_Ptr>>$08)|(Sfx_B4_Ptr<<$08))&$FFFF dc.w ((Sfx_B5_Ptr>>$08)|(Sfx_B5_Ptr<<$08))&$FFFF dc.w ((Sfx_B6_Ptr>>$08)|(Sfx_B6_Ptr<<$08))&$FFFF dc.w ((Sfx_B7_Ptr>>$08)|(Sfx_B7_Ptr<<$08))&$FFFF dc.w ((Sfx_B8_Ptr>>$08)|(Sfx_B8_Ptr<<$08))&$FFFF dc.w ((Sfx_B9_Ptr>>$08)|(Sfx_B9_Ptr<<$08))&$FFFF dc.w ((Sfx_BA_Ptr>>$08)|(Sfx_BA_Ptr<<$08))&$FFFF dc.w ((Sfx_BB_Ptr>>$08)|(Sfx_BB_Ptr<<$08))&$FFFF dc.w ((Sfx_BC_Ptr>>$08)|(Sfx_BC_Ptr<<$08))&$FFFF dc.w ((Sfx_BD_Ptr>>$08)|(Sfx_BD_Ptr<<$08))&$FFFF dc.w ((Sfx_BE_Ptr>>$08)|(Sfx_BE_Ptr<<$08))&$FFFF dc.w ((Sfx_BF_Ptr>>$08)|(Sfx_BF_Ptr<<$08))&$FFFF dc.w ((Sfx_C0_Ptr>>$08)|(Sfx_C0_Ptr<<$08))&$FFFF dc.w ((Sfx_C1_Ptr>>$08)|(Sfx_C1_Ptr<<$08))&$FFFF dc.w ((Sfx_C2_Ptr>>$08)|(Sfx_C2_Ptr<<$08))&$FFFF dc.w ((Sfx_C3_Ptr>>$08)|(Sfx_C3_Ptr<<$08))&$FFFF dc.w ((Sfx_C4_Ptr>>$08)|(Sfx_C4_Ptr<<$08))&$FFFF dc.w ((Sfx_C5_Ptr>>$08)|(Sfx_C5_Ptr<<$08))&$FFFF dc.w ((Sfx_C6_Ptr>>$08)|(Sfx_C6_Ptr<<$08))&$FFFF dc.w ((Sfx_C7_Ptr>>$08)|(Sfx_C7_Ptr<<$08))&$FFFF dc.w ((Sfx_C8_Ptr>>$08)|(Sfx_C8_Ptr<<$08))&$FFFF dc.w ((Sfx_C9_Ptr>>$08)|(Sfx_C9_Ptr<<$08))&$FFFF dc.w ((Sfx_CA_Ptr>>$08)|(Sfx_CA_Ptr<<$08))&$FFFF dc.w ((Sfx_CB_Ptr>>$08)|(Sfx_CB_Ptr<<$08))&$FFFF dc.w ((Sfx_CC_Ptr>>$08)|(Sfx_CC_Ptr<<$08))&$FFFF dc.w ((Sfx_CD_Ptr>>$08)|(Sfx_CD_Ptr<<$08))&$FFFF dc.w ((Sfx_CE_Ptr>>$08)|(Sfx_CE_Ptr<<$08))&$FFFF dc.w ((Sfx_CF_Ptr>>$08)|(Sfx_CF_Ptr<<$08))&$FFFF dc.w ((Sfx_D0_Ptr>>$08)|(Sfx_D0_Ptr<<$08))&$FFFF dc.w ((Sfx_D1_Ptr>>$08)|(Sfx_D1_Ptr<<$08))&$FFFF dc.w ((Sfx_D2_Ptr>>$08)|(Sfx_D2_Ptr<<$08))&$FFFF dc.w ((Sfx_D3_Ptr>>$08)|(Sfx_D3_Ptr<<$08))&$FFFF dc.w ((Sfx_D4_Ptr>>$08)|(Sfx_D4_Ptr<<$08))&$FFFF dc.w ((Sfx_D5_Ptr>>$08)|(Sfx_D5_Ptr<<$08))&$FFFF dc.w ((Sfx_D6_Ptr>>$08)|(Sfx_D6_Ptr<<$08))&$FFFF dc.w ((Sfx_D7_Ptr>>$08)|(Sfx_D7_Ptr<<$08))&$FFFF dc.w ((Sfx_D8_Ptr>>$08)|(Sfx_D8_Ptr<<$08))&$FFFF dc.w ((Sfx_D9_Ptr>>$08)|(Sfx_D9_Ptr<<$08))&$FFFF dc.w ((Sfx_DA_Ptr>>$08)|(Sfx_DA_Ptr<<$08))&$FFFF dc.w ((Sfx_DB_Ptr>>$08)|(Sfx_DB_Ptr<<$08))&$FFFF dc.w ((Sfx_DC_Ptr>>$08)|(Sfx_DC_Ptr<<$08))&$FFFF dc.w ((Sfx_DC_Ptr>>$08)|(Sfx_DC_Ptr<<$08))&$FFFF dc.w ((Sfx_DC_Ptr>>$08)|(Sfx_DC_Ptr<<$08))&$FFFF dc.w ((Sfx_DC_Ptr>>$08)|(Sfx_DC_Ptr<<$08))&$FFFF dc.w ((Sfx_DC_Ptr>>$08)|(Sfx_DC_Ptr<<$08))&$FFFF DriverPointersEnd:

UniversalVoiceBank: binclude "sound/uvb.bin" UniversalVoiceBankEnd: align $8000

DacBank0: binclude "sound/dac_0.bin"

align $8000 DacBank1: binclude "sound/dac_1.bin" align $8000

DacBank2: binclude "sound/dac_2.bin" align $8000

Bank0: binclude "sound/filler.bin" Mini_Boss_Snd: binclude "sound/miniboss.snd" Final_Boss_Snd: binclude "sound/f_boss.snd" align $8000

Bank1: Angel_Island_1_Snd: binclude "sound/aiz1.snd" Angel_Island_2_Snd: binclude "sound/aiz2.snd" Hidrocity_1_Snd: binclude "sound/hcz1.snd" Hidrocity_2_Snd: binclude "sound/hcz2.snd" Marble_Garden_1_Snd: binclude "sound/mgz1.snd" Marble_Garden_2_Snd: binclude "sound/mgz2.snd" Carnival_Night_2_Snd: binclude "sound/cnz2.snd" Carnival_Night_1_Snd: binclude "sound/cnz1.snd" Flying_Battery_1_Snd: binclude "sound/fbz1.snd" Flying_Battery_2_Snd: binclude "sound/fbz2.snd" The_Doomsday_Snd: binclude "sound/tdz.snd" align $8000

Bank2: Icecap_2_Snd: binclude "sound/iz2.snd" Icecap_1_Snd: binclude "sound/iz1.snd" Launch_Base_2_Snd: binclude "sound/lbz2.snd" Launch_Base_1_Snd: binclude "sound/lbz1.snd" Mushroom_Hill_1_Snd: binclude "sound/mhz1.snd" Mushroom_Hill_2_Snd: binclude "sound/mhz2.snd" Sandopolis_1_Snd: binclude "sound/sz1.snd" Sandopolis_2_Snd: binclude "sound/sz2.snd" Lava_Reef_1_Snd: binclude "sound/lrz1.snd" Lava_Reef_2_Snd: binclude "sound/lrz2.snd" Sky_Sanctuary_Snd: binclude "sound/scz.snd" Death_Egg_1_Snd: binclude "sound/dez1.snd" Death_Egg_2_Snd: binclude "sound/dez2.snd" Mini_Boss_SK_Snd: binclude "sound/mb_sk.snd" Boss_Snd: binclude "sound/boss.snd" Glowing_Spheres_Bonus_Stage_snd: binclude "sound/gs_bs.snd" Special_Stage_Snd: binclude "sound/ss.snd" Level_Results_Snd: binclude "sound/lr.snd" Menu_Snd: binclude "sound/menu.snd" align $8000

Bank3: Slot_Machine_Bonus_Stage_snd: binclude "sound/sm_bs.snd" Gum_Ball_Machine_Bonus_Stage_snd: binclude "sound/gbm_bs.snd" Knuckles_Theme_Snd: binclude "sound/kte.snd" Azure_Lake_Snd: binclude "sound/alz.snd" Balloon_Park_Snd: binclude "sound/bpz.snd" Desert_Palace_Snd: binclude "sound/dpz.snd" Chrome_Gadget_Snd: binclude "sound/cgz.snd" Endless_Mine_Snd: binclude "sound/emz.snd" Title_Screen_Snd: binclude "sound/ts.snd" Credits_Snd: binclude "sound/credits.snd" Time_Game_Over_Snd: binclude "sound/tgovr.snd" Continue_Snd: binclude "sound/continue.snd" Extra_Life_Snd: binclude "sound/1up.snd" Emerald_Snd: binclude "sound/emerald.snd" Invencibility_Snd: binclude "sound/invcblty.snd" Competition_Menu_Snd: binclude "sound/2p_menu.snd" Underwater_Timming_Snd: binclude "sound/panic.snd" Presented_by_SEGA_Snd: binclude "sound/p_sega.snd" align $8000

SndBank: SegaPCMBank: SegaSnd: binclude "sound/sega.snd" Sfx_34_Snd: binclude "sound/sfx_34.snd" Sfx_35_Snd: binclude "sound/sfx_35.snd" Sfx_36_Snd: binclude "sound/sfx_36.snd" Sfx_37_Snd: binclude "sound/sfx_37.snd" Sfx_38_Snd: binclude "sound/sfx_38.snd" Sfx_39_Snd: binclude "sound/sfx_39.snd" Sfx_3A_Snd: binclude "sound/sfx_3A.snd" Sfx_3B_Snd: binclude "sound/sfx_3B.snd" Sfx_3C_Snd: binclude "sound/sfx_3C.snd" Sfx_3D_Snd: binclude "sound/sfx_3D.snd" Sfx_3E_Snd: binclude "sound/sfx_3E.snd" Sfx_3F_Snd: binclude "sound/sfx_3F.snd" Sfx_40_Snd: binclude "sound/sfx_40.snd" Sfx_41_Snd: binclude "sound/sfx_41.snd" Sfx_42_Snd: binclude "sound/sfx_42.snd" Sfx_43_Snd: binclude "sound/sfx_43.snd" Sfx_44_Snd: binclude "sound/sfx_44.snd" Sfx_45_Snd: binclude "sound/sfx_45.snd" Sfx_46_Snd: binclude "sound/sfx_46.snd" Sfx_47_Snd: binclude "sound/sfx_47.snd" Sfx_48_Snd: binclude "sound/sfx_48.snd" Sfx_49_Snd: binclude "sound/sfx_49.snd" Sfx_4A_Snd: binclude "sound/sfx_4A.snd" Sfx_4B_Snd: binclude "sound/sfx_4B.snd" Sfx_4C_Snd: binclude "sound/sfx_4C.snd" Sfx_4D_Snd: binclude "sound/sfx_4D.snd" Sfx_4E_Snd: binclude "sound/sfx_4E.snd" Sfx_4F_Snd: binclude "sound/sfx_4F.snd" Sfx_50_Snd: binclude "sound/sfx_50.snd" Sfx_51_Snd: binclude "sound/sfx_51.snd" Sfx_52_Snd: binclude "sound/sfx_52.snd" Sfx_53_Snd: binclude "sound/sfx_53.snd" Sfx_54_Snd: binclude "sound/sfx_54.snd" Sfx_55_Snd: binclude "sound/sfx_55.snd" Sfx_56_Snd: binclude "sound/sfx_56.snd" Sfx_57_Snd: binclude "sound/sfx_57.snd" Sfx_58_Snd: binclude "sound/sfx_58.snd" Sfx_59_Snd: binclude "sound/sfx_59.snd" Sfx_5A_Snd: binclude "sound/sfx_5A.snd" Sfx_5B_Snd: binclude "sound/sfx_5B.snd" Sfx_5C_Snd: binclude "sound/sfx_5C.snd" Sfx_5D_Snd: binclude "sound/sfx_5D.snd" Sfx_5E_Snd: binclude "sound/sfx_5E.snd" Sfx_5F_Snd: binclude "sound/sfx_5F.snd" Sfx_60_Snd: binclude "sound/sfx_60.snd" Sfx_61_Snd: binclude "sound/sfx_61.snd" Sfx_62_Snd: binclude "sound/sfx_62.snd" Sfx_63_Snd: binclude "sound/sfx_63.snd" Sfx_64_Snd: binclude "sound/sfx_64.snd" Sfx_65_Snd: binclude "sound/sfx_65.snd" Sfx_66_Snd: binclude "sound/sfx_66.snd" Sfx_67_Snd: binclude "sound/sfx_67.snd" Sfx_68_Snd: binclude "sound/sfx_68.snd" Sfx_69_Snd: binclude "sound/sfx_69.snd" Sfx_6A_Snd: binclude "sound/sfx_6A.snd" Sfx_6B_Snd: binclude "sound/sfx_6B.snd" Sfx_6C_Snd: binclude "sound/sfx_6C.snd" Sfx_6D_Snd: binclude "sound/sfx_6D.snd" Sfx_6E_Snd: binclude "sound/sfx_6E.snd" Sfx_6F_Snd: binclude "sound/sfx_6F.snd" Sfx_70_Snd: binclude "sound/sfx_70.snd" Sfx_71_Snd: binclude "sound/sfx_71.snd" Sfx_72_Snd: binclude "sound/sfx_72.snd" Sfx_73_Snd: binclude "sound/sfx_73.snd" Sfx_74_Snd: binclude "sound/sfx_74.snd" Sfx_75_Snd: binclude "sound/sfx_75.snd" Sfx_76_Snd: binclude "sound/sfx_76.snd" Sfx_77_Snd: binclude "sound/sfx_77.snd" Sfx_78_Snd: binclude "sound/sfx_78.snd" Sfx_79_Snd: binclude "sound/sfx_79.snd" Sfx_7A_Snd: binclude "sound/sfx_7A.snd" Sfx_7B_Snd: binclude "sound/sfx_7B.snd" Sfx_7C_Snd: binclude "sound/sfx_7C.snd" Sfx_7D_Snd: binclude "sound/sfx_7D.snd" Sfx_7E_Snd: binclude "sound/sfx_7E.snd" Sfx_7F_Snd: binclude "sound/sfx_7F.snd" Sfx_80_Snd: binclude "sound/sfx_80.snd" Sfx_81_Snd: binclude "sound/sfx_81.snd" Sfx_82_Snd: binclude "sound/sfx_82.snd" Sfx_83_Snd: binclude "sound/sfx_83.snd" Sfx_84_Snd: binclude "sound/sfx_84.snd" Sfx_85_Snd: binclude "sound/sfx_85.snd" Sfx_86_Snd: binclude "sound/sfx_86.snd" Sfx_87_Snd: binclude "sound/sfx_87.snd" Sfx_88_Snd: binclude "sound/sfx_88.snd" Sfx_89_Snd: binclude "sound/sfx_89.snd" Sfx_8A_Snd: binclude "sound/sfx_8A.snd" Sfx_8B_Snd: binclude "sound/sfx_8B.snd" Sfx_8C_Snd: binclude "sound/sfx_8C.snd" Sfx_8D_Snd: binclude "sound/sfx_8D.snd" Sfx_8E_Snd: binclude "sound/sfx_8E.snd" Sfx_8F_Snd: binclude "sound/sfx_8F.snd" Sfx_90_Snd: binclude "sound/sfx_90.snd" Sfx_91_Snd: binclude "sound/sfx_91.snd" Sfx_92_Snd: binclude "sound/sfx_92.snd" Sfx_93_Snd: binclude "sound/sfx_93.snd" Sfx_94_Snd: binclude "sound/sfx_94.snd" Sfx_95_Snd: binclude "sound/sfx_95.snd" Sfx_96_Snd: binclude "sound/sfx_96.snd" Sfx_97_Snd: binclude "sound/sfx_97.snd" Sfx_98_Snd: binclude "sound/sfx_98.snd" Sfx_99_Snd: binclude "sound/sfx_99.snd" Sfx_9A_Snd: binclude "sound/sfx_9A.snd" Sfx_9B_Snd: binclude "sound/sfx_9B.snd" Sfx_9C_Snd: binclude "sound/sfx_9C.snd" Sfx_9D_Snd: binclude "sound/sfx_9D.snd" Sfx_9E_Snd: binclude "sound/sfx_9E.snd" Sfx_9F_Snd: binclude "sound/sfx_9F.snd" Sfx_A0_Snd: binclude "sound/sfx_A0.snd" Sfx_A1_Snd: binclude "sound/sfx_A1.snd" Sfx_A2_Snd: binclude "sound/sfx_A2.snd" Sfx_A3_Snd: binclude "sound/sfx_A3.snd" Sfx_A4_Snd: binclude "sound/sfx_A4.snd" Sfx_A5_Snd: binclude "sound/sfx_A5.snd" Sfx_A6_Snd: binclude "sound/sfx_A6.snd" Sfx_A7_Snd: binclude "sound/sfx_A7.snd" Sfx_A8_Snd: binclude "sound/sfx_A8.snd" Sfx_A9_Snd: binclude "sound/sfx_A9.snd" Sfx_AA_Snd: binclude "sound/sfx_AA.snd" Sfx_AB_Snd: binclude "sound/sfx_AB.snd" Sfx_AC_Snd: binclude "sound/sfx_AC.snd" Sfx_AD_Snd: binclude "sound/sfx_AD.snd" Sfx_AE_Snd: binclude "sound/sfx_AE.snd" Sfx_AF_Snd: binclude "sound/sfx_AF.snd" Sfx_B0_Snd: binclude "sound/sfx_B0.snd" Sfx_B1_Snd: binclude "sound/sfx_B1.snd" Sfx_B2_Snd: binclude "sound/sfx_B2.snd" Sfx_B3_Snd: binclude "sound/sfx_B3.snd" Sfx_B4_Snd: binclude "sound/sfx_B4.snd" Sfx_B5_Snd: binclude "sound/sfx_B5.snd" Sfx_B6_Snd: binclude "sound/sfx_B6.snd" Sfx_B7_Snd: binclude "sound/sfx_B7.snd" Sfx_B8_Snd: binclude "sound/sfx_B8.snd" Sfx_B9_Snd: binclude "sound/sfx_B9.snd" Sfx_BA_Snd: binclude "sound/sfx_BA.snd" Sfx_BB_Snd: binclude "sound/sfx_BB.snd" Sfx_BC_Snd: binclude "sound/sfx_BC.snd" Sfx_BD_Snd: binclude "sound/sfx_BD.snd" Sfx_BE_Snd: binclude "sound/sfx_BE.snd" Sfx_BF_Snd: binclude "sound/sfx_BF.snd" Sfx_C0_Snd: binclude "sound/sfx_C0.snd" Sfx_C1_Snd: binclude "sound/sfx_C1.snd" Sfx_C2_Snd: binclude "sound/sfx_C2.snd" Sfx_C3_Snd: binclude "sound/sfx_C3.snd" Sfx_C4_Snd: binclude "sound/sfx_C4.snd" Sfx_C5_Snd: binclude "sound/sfx_C5.snd" Sfx_C6_Snd: binclude "sound/sfx_C6.snd" Sfx_C7_Snd: binclude "sound/sfx_C7.snd" Sfx_C8_Snd: binclude "sound/sfx_C8.snd" Sfx_C9_Snd: binclude "sound/sfx_C9.snd" Sfx_CA_Snd: binclude "sound/sfx_CA.snd" Sfx_CB_Snd: binclude "sound/sfx_CB.snd" Sfx_CC_Snd: binclude "sound/sfx_CC.snd" Sfx_CD_Snd: binclude "sound/sfx_CD.snd" Sfx_CE_Snd: binclude "sound/sfx_CE.snd" Sfx_CF_Snd: binclude "sound/sfx_CF.snd" Sfx_D0_Snd: binclude "sound/sfx_D0.snd" Sfx_D1_Snd: binclude "sound/sfx_D1.snd" Sfx_D2_Snd: binclude "sound/sfx_D2.snd" Sfx_D3_Snd: binclude "sound/sfx_D3.snd" Sfx_D4_Snd: binclude "sound/sfx_D4.snd" Sfx_D5_Snd: binclude "sound/sfx_D5.snd" Sfx_D6_Snd: binclude "sound/sfx_D6.snd" Sfx_D7_Snd: binclude "sound/sfx_D7.snd" Sfx_D8_Snd: binclude "sound/sfx_D8.snd" Sfx_D9_Snd: binclude "sound/sfx_D9.snd" Sfx_DA_Snd: binclude "sound/sfx_DA.snd" Sfx_DB_Snd: binclude "sound/sfx_DB.snd" Sfx_DC_Snd: binclude "sound/sfx_DC.snd" </asm>

Driver data files

then unpack this:

Download.svg Download The Sonic 3 Driver data files
File: s3driverdata.7z (131 kB) (info)

Enabling Sonic 2 / 3 Level Music Memory

Doing this is optional as it has little to do with the driver itself, but is a very useful and quick hack that makes life a lot easier for the more painful phase of using a massively different sound system than before, fixing the freaken sound. Sonic1 uses a second index for restoring music as opposed to actually memorizing it like later sonic games do.

First we will locate: <asm> Level_PlayBgm: lea (MusicList).l,a1 ; load music playlist move.b (a1,d0.w),d0 ; add d0 to a1 bsr.w PlaySound ; play music move.b #$34,($FFFFD080).w ; load title card object </asm>

and insert a new line to make it read: <asm> Level_PlayBgm: lea (MusicList).l,a1 ; load music playlist move.b (a1,d0.w),d0 ; add d0 to a1 move.w d0,($FFFFFF90).w ; store level music bsr.w PlaySound ; play music move.b #$34,($FFFFD080).w ; load title card object </asm>

Now we will locate: <asm> move.b ($FFFFFE10).w,d0 cmpi.w #$103,($FFFFFE10).w ; check if level is SBZ3 bne.s Obj01_PlayMusic moveq #5,d0 ; play SBZ music

Obj01_PlayMusic: lea (MusicList2).l,a1 move.b (a1,d0.w),d0 jsr (PlaySound).l ; play normal music </asm>

seems the invincibility stars conflict with music memory, so we will just make it use music list 1, so the result is: <asm> move.b ($FFFFFE10).w,d0 cmpi.w #$103,($FFFFFE10).w ; check if level is SBZ3 bne.s Obj01_PlayMusic moveq #5,d0 ; play SBZ music

Obj01_PlayMusic: lea (MusicList).l,a1 ; load music playlist move.b (a1,d0.w),d0 ; add d0 to a1 move.w d0,($FFFFFF90).w ; store level music jsr (PlaySound).l ; play normal music </asm>

then remove: <asm>

---------------------------------------------------------------------------
Music to play after invincibility wears off
---------------------------------------------------------------------------

MusicList2: binclude misc\muslist2.bin </asm> now we want to fix the underwater counter music restore code, so locate: <asm> ResumeMusic: ; XREF: Obj64_Wobble; Sonic_Water; Obj0A_ReduceAir cmpi.w #$C,($FFFFFE14).w bhi.s loc_140AC move.w #$82,d0 ; play LZ music cmpi.w #$103,($FFFFFE10).w ; check if level is 0103 (SBZ3) bne.s loc_140A6 move.w #$86,d0 ; play SBZ music

loc_140A6: jsr (PlaySound).l </asm> and replace it with: <asm> ResumeMusic: ; XREF: Obj64_Wobble; Sonic_Water; Obj0A_ReduceAir cmpi.w #$C,($FFFFFE14).w bhi.s loc_140AC move.w ($FFFFFF90).w,d0  ;resume music jsr (PlaySound).l </asm> that sets up music memory for later.

Fixing the Music Playlist

Okay, so we now have a working sonic3 driver, but we have yet to fix the music playlist it is still pointing to sound effects.

Open misc\muslist1.bin in your favorite hex editor.

You will find that it reads:

Hex Data
81 82 83 84 85 86 8D 00

Pick some new music for your game.


I prefer to use:

Hex Data
01 04 13 0D 07 16 30 00

Once you rebuild your rom, you will have some music on the levels, but sound effects and some other musics unrelated to the playlist will need fixing. This part is much easier fixing if you applied the sonic2 memory fix to your hack, otherwise edit misc/muslist2.bin and make the exact same changes.

Fixing the Sneaker

We need to fix the sneaker in a different way than we normally do, because sonic3 uses a different means for speeding up or slowing down the music then its predecessors do. first we will locate: <asm> Obj2E_ChkShoes: cmpi.b #3,d0 ; does monitor contain speed shoes? bne.s Obj2E_ChkShield move.b #1,($FFFFFE2E).w ; speed up the BG music move.w #$4B0,($FFFFD034).w ; time limit for the power-up move.w #$C00,($FFFFF760).w ; change Sonic"s top speed move.w #$18,($FFFFF762).w move.w #$80,($FFFFF764).w move.w #$E2,d0 jmp (PlaySound).l ; Speed up the music </asm> note that sonic1 plays a special sound to make the music speed up, our new driver does not do that, so we will change it to read: <asm> Obj2E_ChkShoes: cmpi.b #3,d0 ; does monitor contain speed shoes? bne.s Obj2E_ChkShield move.b #1,($FFFFFE2E).w ; speed up the BG music move.w #$4B0,($FFFFD034).w ; time limit for the power-up move.w #$C00,($FFFFF760).w ; change Sonic"s top speed move.w #$18,($FFFFF762).w move.w #$80,($FFFFF764).w move.w #8,d0 jmp (SetTempo).l ; Speed up the music </asm> that speeds the music up properly, but we need to tell it how to slow the music back down. So we find: <asm> Obj01_ChkShoes: tst.b ($FFFFFE2E).w ; does Sonic have speed shoes? beq.s Obj01_ExitChk ; if not, branch tst.w $34(a0) ; check time remaining beq.s Obj01_ExitChk subq.w #1,$34(a0) ; subtract 1 from time bne.s Obj01_ExitChk move.w #$600,($FFFFF760).w ; restore Sonic"s speed move.w #$C,($FFFFF762).w ; restore Sonic"s acceleration move.w #$80,($FFFFF764).w ; restore Sonic"s deceleration move.b #0,($FFFFFE2E).w ; cancel speed shoes move.w #$E3,d0 jmp (PlaySound).l ; run music at normal speed </asm> note that sonic1 also uses another sound to return the music to normal speed, sonic3 doesn't, so we will correct the sneaker wearing off effect, by changin it to: <asm> Obj01_ChkShoes: tst.b ($FFFFFE2E).w ; does Sonic have speed shoes? beq.s Obj01_ExitChk ; if not, branch tst.w $34(a0) ; check time remaining beq.s Obj01_ExitChk subq.w #1,$34(a0) ; subtract 1 from time bne.s Obj01_ExitChk move.w #$600,($FFFFF760).w ; restore Sonic"s speed move.w #$C,($FFFFF762).w ; restore Sonic"s acceleration move.w #$80,($FFFFF764).w ; restore Sonic"s deceleration move.b #0,($FFFFFE2E).w ; cancel speed shoes move.w #$0,d0 jmp (SetTempo).l ; run music at normal speed </asm>

Fixing the screen transition sound effects

Sega Screen Part 1

Don't we want music to fade out properly when changing screens? Well if that is true, then you are reading in the right place, first off, go and find: <asm> SegaScreen: ; XREF: GameModeArray move.b #$E4,d0 bsr.w PlaySound_Special ; stop music </asm>

we want it to change to: <asm> SegaScreen: ; XREF: GameModeArray move.b #$E1,d0 bsr.w PlaySound_Special ; Sonic 3 prefers to fade out rather than stop the music. </asm>

Title Screen playback fix

Good, the sega logo screen does with music what we want it to! now to fix the Title Screen, locate: <asm> TitleScreen: ; XREF: GameModeArray move.b #$E4,d0 bsr.w PlaySound_Special ; stop music </asm> and change it to: <asm> TitleScreen: ; XREF: GameModeArray move.b #$E1,d0 bsr.w PlaySound_Special ; Sonic 3 prefers to fade out rather than stop the music. </asm>

Ending Sequence music fix

Good, the title screen transition effect should be fixed now, but we still have a ways to go, so now lets fix the ending sequence transitioning, locate: <asm> EndingSequence: ; XREF: GameModeArray move.b #$E4,d0 bsr.w PlaySound_Special ; stop music </asm> and change it to: <asm> EndingSequence: ; XREF: GameModeArray move.b #$E1,d0 bsr.w PlaySound_Special ; Sonic 3 prefers to fade out rather than stop the music. </asm>

Fix the level select sound

Now that the screens fade music as they should, shouldn't we fix the rest of the fades throughout the game? I would think so, so lets do just that, locate: <asm> move.b #$E0,d0 bsr.w PlaySound_Special ; fade out music rts

===========================================================================
---------------------------------------------------------------------------
Level select - level pointers
---------------------------------------------------------------------------

</asm> and change it to: <asm> move.b #$E1,d0 bsr.w PlaySound_Special ; fade out music rts

===========================================================================
---------------------------------------------------------------------------
Level select - level pointers
---------------------------------------------------------------------------

</asm>

Music fade out on demo exit ala Sonic 3

that fixes a spot in the level select, which we will work on later. For now locate: <asm> loc_33E4: ; XREF: Demo andi.b #$80,($FFFFF605).w ; is Start button pressed? bne.w Title_ChkLevSel ; if yes, branch tst.w ($FFFFF614).w bne.w loc_33B6 move.b #$E0,d0 bsr.w PlaySound_Special ; fade out music </asm> and change it to: <asm> loc_33E4: ; XREF: Demo andi.b #$80,($FFFFF605).w ; is Start button pressed? bne.w Title_ChkLevSel ; if yes, branch tst.w ($FFFFF614).w bne.w loc_33B6 move.b #$E1,d0 bsr.w PlaySound_Special ; fade out music </asm>

Fade out music in prep of level

now find: <asm> Level: ; XREF: GameModeArray bset #7,($FFFFF600).w ; add $80 to screen mode (for pre level sequence) tst.w ($FFFFFFF0).w bmi.s loc_37B6 move.b #$E0,d0 bsr.w PlaySound_Special ; fade out music </asm> and change it to: <asm> Level: ; XREF: GameModeArray bset #7,($FFFFF600).w ; add $80 to screen mode (for pre level sequence) tst.w ($FFFFFFF0).w bmi.s loc_37B6 move.b #$E1,d0 bsr.w PlaySound_Special ; fade out music </asm>

Continue screen fade out

now find: <asm> Obj81_GetUp: ; XREF: Obj81_Animate addq.b #2,$24(a0) move.l #Map_Sonic,4(a0) move.w #$780,2(a0) move.b #$1E,$1C(a0) ; use "getting up" animation clr.w $14(a0) subq.w #8,$C(a0) move.b #$E0,d0 bsr.w PlaySound_Special ; fade out music </asm> and change it to: <asm> Obj81_GetUp: ; XREF: Obj81_Animate addq.b #2,$24(a0) move.l #Map_Sonic,4(a0) move.w #$780,2(a0) move.b #$1E,$1C(a0) ; use "getting up" animation clr.w $14(a0) subq.w #8,$C(a0) move.b #$E1,d0 bsr.w PlaySound_Special ; fade out music </asm> okay, that should fix all the music fades between screens, but still there are yet more fixes to be made.

Fixing the SEGA! sound

Want to hear the SEGA! pcm when you should? Well this section is for you then. Go find: <asm> Sega_WaitPallet: move.b #2,($FFFFF62A).w bsr.w DelayProgram bsr.w PalCycle_Sega bne.s Sega_WaitPallet

move.b #$E1,d0 bsr.w PlaySound_Special ; play "SEGA" sound move.b #$14,($FFFFF62A).w bsr.w DelayProgram move.w #$1E,($FFFFF614).w </asm> and change it to: <asm> Sega_WaitPallet: move.b #2,($FFFFF62A).w bsr.w DelayProgram bsr.w PalCycle_Sega bne.s Sega_WaitPallet

move.b #$FF,d0 bsr.w PlaySound_Special ; play "SEGA" sound move.b #$14,($FFFFF62A).w bsr.w DelayProgram move.w #$1E,($FFFFF614).w </asm> That should fix the sega pcm sample on the sega logo screen.

Fixing the Title Screen music

Want to get rid of that weird sound effect on the title screen? Then we need to fix the music. Find: <asm> move.b #$8A,d0 ; play title screen music bsr.w PlaySound_Special move.b #0,($FFFFFFFA).w ; disable debug mode move.w #$178,($FFFFF614).w ; run title screen for $178 frames lea ($FFFFD080).w,a1 moveq #0,d0 move.w #7,d1

Title_ClrObjRam2: </asm>

and change it to: <asm> move.b #$25,d0 ; play title screen music bsr.w PlaySound_Special move.b #0,($FFFFFFFA).w ; disable debug mode move.w #$178,($FFFFF614).w ; run title screen for $178 frames lea ($FFFFD080).w,a1 moveq #0,d0 move.w #7,d1

Title_ClrObjRam2: </asm>

that fixes the title screen's music so that it plays sonic 3 title screen music, or you can pick another music if you so choose.

Fixing the Special Stage music

now that the title screen plays the right music, lets fix the special stage music. We simply want to locate: <asm> SS_ClrNemRam: move.l d0,(a1)+ dbf d1,SS_ClrNemRam ; clear Nemesis buffer

clr.b ($FFFFF64E).w clr.w ($FFFFFE02).w moveq #$A,d0 bsr.w PalLoad1 ; load special stage pallet jsr (SS_Load).l move.l #0,($FFFFF700).w move.l #0,($FFFFF704).w move.b #9,($FFFFD000).w ; load special stage Sonic object bsr.w PalCycle_SS clr.w ($FFFFF780).w ; set stage angle to "upright" move.w #$40,($FFFFF782).w ; set stage rotation speed move.w #$89,d0 bsr.w PlaySound ; play special stage BG music move.w #0,($FFFFF790).w lea (Demo_Index).l,a1 moveq #6,d0 lsl.w #2,d0 movea.l (a1,d0.w),a1 move.b 1(a1),($FFFFF792).w subq.b #1,($FFFFF792).w clr.w ($FFFFFE20).w clr.b ($FFFFFE1B).w move.w #0,($FFFFFE08).w move.w #1800,($FFFFF614).w tst.b ($FFFFFFE2).w ; has debug cheat been entered? beq.s SS_NoDebug ; if not, branch btst #6,($FFFFF604).w ; is A button pressed? beq.s SS_NoDebug ; if not, branch move.b #1,($FFFFFFFA).w ; enable debug mode </asm> and change it to: <asm> SS_ClrNemRam: move.l d0,(a1)+ dbf d1,SS_ClrNemRam ; clear Nemesis buffer

clr.b ($FFFFF64E).w clr.w ($FFFFFE02).w moveq #$A,d0 bsr.w PalLoad1 ; load special stage pallet jsr (SS_Load).l move.l #0,($FFFFF700).w move.l #0,($FFFFF704).w move.b #9,($FFFFD000).w ; load special stage Sonic object bsr.w PalCycle_SS clr.w ($FFFFF780).w ; set stage angle to "upright" move.w #$40,($FFFFF782).w ; set stage rotation speed move.w #$1C,d0 bsr.w PlaySound ; play special stage BG music move.w #0,($FFFFF790).w lea (Demo_Index).l,a1 moveq #6,d0 lsl.w #2,d0 movea.l (a1,d0.w),a1 move.b 1(a1),($FFFFF792).w subq.b #1,($FFFFF792).w clr.w ($FFFFFE20).w clr.b ($FFFFFE1B).w move.w #0,($FFFFFE08).w move.w #1800,($FFFFF614).w tst.b ($FFFFFFE2).w ; has debug cheat been entered? beq.s SS_NoDebug ; if not, branch btst #6,($FFFFF604).w ; is A button pressed? beq.s SS_NoDebug ; if not, branch move.b #1,($FFFFFFFA).w ; enable debug mode </asm> now we have sonic 3 special stage music on the sonic 1 special stage. Or you could choose a different song of your choice.

Fixing the Ending Sequence music

now time to fix the music for the ending sequence. Find: <asm> End_LoadData: moveq #$1C,d0 bsr.w RunPLC_ROM ; load ending sequence patterns jsr (Hud_Base).l bsr.w LevelSizeLoad bsr.w DeformBgLayer bset #2,($FFFFF754).w bsr.w MainLoadBlockLoad bsr.w LoadTilesFromStart move.l #Col_GHZ,($FFFFF796).w ; load collision index move #$2300,sr lea (Kos_EndFlowers).l,a0 ; load extra flower patterns lea ($FFFF9400).w,a1 ; RAM address to buffer the patterns bsr.w KosDec moveq #3,d0 bsr.w PalLoad1 ; load Sonic"s pallet move.w #$8B,d0 bsr.w PlaySound ; play ending sequence music btst #6,($FFFFF604).w ; is button A pressed? beq.s End_LoadSonic ; if not, branch move.b #1,($FFFFFFFA).w ; enable debug mode </asm> and change it to: <asm> End_LoadData: moveq #$1C,d0 bsr.w RunPLC_ROM ; load ending sequence patterns jsr (Hud_Base).l bsr.w LevelSizeLoad bsr.w DeformBgLayer bset #2,($FFFFF754).w bsr.w MainLoadBlockLoad bsr.w LoadTilesFromStart move.l #Col_GHZ,($FFFFF796).w ; load collision index move #$2300,sr lea (Kos_EndFlowers).l,a0 ; load extra flower patterns lea ($FFFF9400).w,a1 ; RAM address to buffer the patterns bsr.w KosDec moveq #3,d0 bsr.w PalLoad1 ; load Sonic"s pallet move.w #$32,d0 bsr.w PlaySound ; play ending sequence music btst #6,($FFFFF604).w ; is button A pressed? beq.s End_LoadSonic ; if not, branch move.b #1,($FFFFFFFA).w ; enable debug mode </asm> that makes it so that sonic 3 ending sequence music plays. Or you could choose a different music.

Fixing the Credits music

time to fix the credits music, this time it needs to be fixed in multiple places. First we find: <asm> LevSel_Credits: ; XREF: LevelSelect move.b #$1C,($FFFFF600).w ; set screen mode to $1C (Credits) move.b #$91,d0 bsr.w PlaySound_Special ; play credits music move.w #0,($FFFFFFF4).w rts </asm> and change it to: <asm> LevSel_Credits: ; XREF: LevelSelect move.b #$1C,($FFFFF600).w ; set screen mode to $1C (Credits) move.b #$26,d0 bsr.w PlaySound_Special ; play credits music move.w #0,($FFFFFFF4).w rts </asm> then we find: <asm> End_MainLoop: bsr.w PauseGame move.b #$18,($FFFFF62A).w bsr.w DelayProgram addq.w #1,($FFFFFE04).w bsr.w End_MoveSonic jsr (ObjectsLoad).l bsr.w DeformBgLayer jsr (BuildSprites).l jsr (ObjPosLoad).l bsr.w PalCycle_Load bsr.w OscillateNumDo bsr.w ChangeRingFrame cmpi.b #$18,($FFFFF600).w ; is scene number $18 (ending)? beq.s loc_52DA ; if yes, branch move.b #$1C,($FFFFF600).w ; set scene to $1C (credits) move.b #$91,d0 bsr.w PlaySound_Special ; play credits music move.w #0,($FFFFFFF4).w ; set credits index number to 0 rts </asm> and change it to: <asm> End_MainLoop: bsr.w PauseGame move.b #$18,($FFFFF62A).w bsr.w DelayProgram addq.w #1,($FFFFFE04).w bsr.w End_MoveSonic jsr (ObjectsLoad).l bsr.w DeformBgLayer jsr (BuildSprites).l jsr (ObjPosLoad).l bsr.w PalCycle_Load bsr.w OscillateNumDo bsr.w ChangeRingFrame cmpi.b #$18,($FFFFF600).w ; is scene number $18 (ending)? beq.s loc_52DA ; if yes, branch move.b #$1C,($FFFFF600).w ; set scene to $1C (credits) move.b #$26,d0 bsr.w PlaySound_Special ; play credits music move.w #0,($FFFFFFF4).w ; set credits index number to 0 rts </asm>

That fixes the credits music with sonic 3 credits music, otherwise you could use a different song if you choose.

Fixing Special Event sound

Chaos Emerald

time to fix sound for events that only happen in certain situations, i.e. end of level, game over / time over, extra life and such. first we will start with the chaos emerald collection sound, go and find: <asm> Obj09_NoEmer: move.w #$93,d0 jsr (PlaySound_Special).l ; play emerald music moveq #0,d4 rts </asm> and change it to: <asm> Obj09_NoEmer: move.w #$2B,d0 jsr (PlaySound_Special).l ; play emerald music moveq #0,d4 rts </asm>

Game Over / Time Over

next we will start with Game Over / Time Over, go and find: <asm> loc_138C2: move.w #$8F,d0 jsr (PlaySound).l ; play game over music moveq #3,d0 jmp (LoadPLC).l ; load game over patterns </asm> and change it to: <asm> loc_138C2: move.w #$27,d0 jsr (PlaySound).l ; play game over music moveq #3,d0 jmp (LoadPLC).l ; load game over patterns </asm>

Sonic has passed Music

that causes the Game Over and Time Over screens to use its sonic 3 version or you could choose a different song if you wish. Now we will go on to End of level Results. Find: <asm> move.w ($FFFFFE20).w,d0 mulu.w #10,d0 ; multiply rings by 10 move.w d0,($FFFFF7D4).w ; set rings bonus move.w #$8E,d0 jsr (PlaySound_Special).l ; play end-of-level music lea ($FFFFD000).w,a1 moveq #0,d0 move.w #$7FF,d1

SS_EndClrObjRam: </asm> and change it to: <asm> move.w ($FFFFFE20).w,d0 mulu.w #10,d0 ; multiply rings by 10 move.w d0,($FFFFF7D4).w ; set rings bonus move.w #$29,d0 jsr (PlaySound_Special).l ; play end-of-level music lea ($FFFFD000).w,a1 moveq #0,d0 move.w #$7FF,d1

SS_EndClrObjRam: </asm> now find: <asm> loc_ECD0: add.w d0,d0 move.w TimeBonuses(pc,d0.w),($FFFFF7D2).w ; set time bonus move.w ($FFFFFE20).w,d0 ; load number of rings mulu.w #10,d0 ; multiply by 10 move.w d0,($FFFFF7D4).w ; set ring bonus move.w #$8E,d0 jsr (PlaySound_Special).l ; play "Sonic got through" music </asm> and change it to: <asm> loc_ECD0: add.w d0,d0 move.w TimeBonuses(pc,d0.w),($FFFFF7D2).w ; set time bonus move.w ($FFFFFE20).w,d0 ; load number of rings mulu.w #10,d0 ; multiply by 10 move.w d0,($FFFFF7D4).w ; set ring bonus move.w #$29,d0 jsr (PlaySound_Special).l ; play "Sonic got through" music </asm>

1up Sound

that fixes the end of level and end of special stage results music by using modern version, but you could use a different song if you wish. Next we will fix the extra life sound, so find: <asm> loc_9CA4: addq.b #1,($FFFFFE12).w ; add 1 to the number of lives you have addq.b #1,($FFFFFE1C).w ; add 1 to the lives counter move.w #$88,d0 ; play extra life music </asm> and change it to: <asm> loc_9CA4: addq.b #1,($FFFFFE12).w ; add 1 to the number of lives you have addq.b #1,($FFFFFE1C).w ; add 1 to the lives counter move.w #$2A,d0 ; play extra life music </asm> now find: <asm> ExtraLife: addq.b #1,($FFFFFE12).w ; add 1 to the number of lives you have addq.b #1,($FFFFFE1C).w ; add 1 to the lives counter move.w #$88,d0 jmp (PlaySound).l ; play extra life music </asm> and change it to: <asm> ExtraLife: addq.b #1,($FFFFFE12).w ; add 1 to the number of lives you have addq.b #1,($FFFFFE1C).w ; add 1 to the lives counter move.w #$2A,d0 jmp (PlaySound).l ; play extra life music </asm> now find: <asm> Obj09_Get1Up: addq.b #1,($FFFFFE12).w ; add 1 to number of lives addq.b #1,($FFFFFE1C).w ; add 1 to lives counter move.w #$88,d0 jsr (PlaySound).l ; play extra life music moveq #0,d4 rts </asm> and change it to: <asm> Obj09_Get1Up: addq.b #1,($FFFFFE12).w ; add 1 to number of lives addq.b #1,($FFFFFE1C).w ; add 1 to lives counter move.w #$2A,d0 jsr (PlaySound).l ; play extra life music moveq #0,d4 rts </asm>

Stars Monitor

That fixes the extra life sound with the sonic3 version, though I am sure you could use a different one in a different slot if such thing exists. Time to fix the invincibinity music, so find: <asm> Obj2E_ChkInvinc: cmpi.b #5,d0 ; does monitor contain invincibility? bne.s Obj2E_ChkRings move.b #1,($FFFFFE2D).w ; make Sonic invincible move.w #$4B0,($FFFFD032).w ; time limit for the power-up move.b #$38,($FFFFD200).w ; load stars object ($3801) move.b #1,($FFFFD21C).w move.b #$38,($FFFFD240).w ; load stars object ($3802) move.b #2,($FFFFD25C).w move.b #$38,($FFFFD280).w ; load stars object ($3803) move.b #3,($FFFFD29C).w move.b #$38,($FFFFD2C0).w ; load stars object ($3804) move.b #4,($FFFFD2DC).w tst.b ($FFFFF7AA).w ; is boss mode on? bne.s Obj2E_NoMusic ; if yes, branch move.w #$87,d0 jmp (PlaySound).l ; play invincibility music </asm> and change it to: <asm> Obj2E_ChkInvinc: cmpi.b #5,d0 ; does monitor contain invincibility? bne.s Obj2E_ChkRings move.b #1,($FFFFFE2D).w ; make Sonic invincible move.w #$4B0,($FFFFD032).w ; time limit for the power-up move.b #$38,($FFFFD200).w ; load stars object ($3801) move.b #1,($FFFFD21C).w move.b #$38,($FFFFD240).w ; load stars object ($3802) move.b #2,($FFFFD25C).w move.b #$38,($FFFFD280).w ; load stars object ($3803) move.b #3,($FFFFD29C).w move.b #$38,($FFFFD2C0).w ; load stars object ($3804) move.b #4,($FFFFD2DC).w tst.b ($FFFFF7AA).w ; is boss mode on? bne.s Obj2E_NoMusic ; if yes, branch move.w #$2C,d0 jmp (PlaySound).l ; play invincibility music </asm>

Extra Continue sound

that fixes the invincibility sound with the sonic3 version, but you could choose a different one if you wish. Next we will fix the get a continue sound, so find: <asm> Obj7E_Continue: ; XREF: Obj7E_Index move.b #4,($FFFFD6DA).w move.b #$14,($FFFFD6E4).w move.w #$BF,d0 jsr (PlaySound_Special).l ; play continues music addq.b #2,$24(a0) move.w #360,$1E(a0) ; set time delay to 6 seconds bra.w DisplaySprite </asm> and change it to: <asm> Obj7E_Continue: ; XREF: Obj7E_Index move.b #4,($FFFFD6DA).w move.b #$14,($FFFFD6E4).w move.w #$AC,d0 jsr (PlaySound_Special).l ; play continues music addq.b #2,$24(a0) move.w #360,$1E(a0) ; set time delay to 6 seconds bra.w DisplaySprite </asm> then find: <asm> Obj09_GetCont: jsr (CollectRing).l cmpi.w #50,($FFFFFE20).w ; check if you have 50 rings bcs.s Obj09_NoCont bset #0,($FFFFFE1B).w bne.s Obj09_NoCont addq.b #1,($FFFFFE18).w ; add 1 to number of continues move.w #$BF,d0 jsr (PlaySound).l ; play extra continue sound </asm> and change it to: <asm> Obj09_GetCont: jsr (CollectRing).l cmpi.w #50,($FFFFFE20).w ; check if you have 50 rings bcs.s Obj09_NoCont bset #0,($FFFFFE1B).w bne.s Obj09_NoCont addq.b #1,($FFFFFE18).w ; add 1 to number of continues move.w #$AC,d0 jsr (PlaySound).l ; play extra continue sound </asm>

Continue screen music

that fixes the extra continue sound that plays on both the end result screen and in the special stage. How about fixing the music for the continue screen itself? That is what we are doing next, so find: <asm> jsr (ContScrCounter).l ; run countdown (start from 10) moveq #$12,d0 bsr.w PalLoad1 ; load continue screen pallet move.b #$90,d0 bsr.w PlaySound ; play continue music </asm> and change it to: <asm> jsr (ContScrCounter).l ; run countdown (start from 10) moveq #$12,d0 bsr.w PalLoad1 ; load continue screen pallet move.b #$28,d0 bsr.w PlaySound ; play continue music </asm>

Special Stage entrance/exit

that fixes the continue screen music. Though you could choose a different song if you wish. Time to fix the special stage entry sound, so find: <asm> SpecialStage: ; XREF: GameModeArray move.w #$CA,d0 bsr.w PlaySound_Special ; play special stage entry sound </asm> and change it to: <asm> SpecialStage: ; XREF: GameModeArray move.w #$AF,d0 bsr.w PlaySound_Special ; play special stage entry sound </asm> then find: <asm> SS_NormalExit: bsr.w PauseGame move.b #$C,($FFFFF62A).w bsr.w DelayProgram jsr (ObjectsLoad).l jsr (BuildSprites).l bsr.w RunPLC_RAM tst.w ($FFFFFE02).w beq.s SS_NormalExit tst.l ($FFFFF680).w bne.s SS_NormalExit move.w #$CA,d0 bsr.w PlaySound_Special ; play special stage exit sound bsr.w Pal_MakeFlash rts </asm> and change it to: <asm> SS_NormalExit: bsr.w PauseGame move.b #$C,($FFFFF62A).w bsr.w DelayProgram jsr (ObjectsLoad).l jsr (BuildSprites).l bsr.w RunPLC_RAM tst.w ($FFFFFE02).w beq.s SS_NormalExit tst.l ($FFFFF680).w bne.s SS_NormalExit move.w #$AF,d0 bsr.w PlaySound_Special ; play special stage exit sound bsr.w Pal_MakeFlash rts </asm>

Boss music

on entry and exit, the special stage should now play the correct sound. Time to fix the boss music, so find: <asm> loc_6ED0: move.w #$8C,d0 bsr.w PlaySound ; play boss music </asm> and change it to: <asm> loc_6ED0: move.w #$19,d0 bsr.w PlaySound ; play boss music </asm> then find: <asm> loc_6F4A: move.w #$8C,d0 bsr.w PlaySound ; play boss music </asm> and change it to: <asm> loc_6F4A: move.w #$19,d0 bsr.w PlaySound ; play boss music </asm> then find: <asm> loc_70D0: move.w #$8C,d0 bsr.w PlaySound ; play boss music </asm> and change it to: <asm> loc_70D0: move.w #$19,d0 bsr.w PlaySound ; play boss music </asm> then find: <asm> loc_7144: move.w #$8C,d0 bsr.w PlaySound ; play boss music </asm> and change it to: <asm> loc_7144: move.w #$8C,d0 bsr.w PlaySound ; play boss music </asm> then find: <asm> loc_71EC: move.w #$19,d0 bsr.w PlaySound ; play boss music </asm>

GHZ3 music restore, the modern way

I not that long ago remembered that since sonic1 does not have music memory support, the game's way of playing the previous song is hard coded, so we need to fix that since we added memory support earlier, so find: <asm> oc_179E0: clr.w $12(a0) move.w #$81,d0 jsr (PlaySound).l ; play GHZ music </asm> and change it to: <asm> oc_179E0: clr.w $12(a0) move.w ($FFFFFF90).w,d0 jsr (PlaySound).l ; play GHZ music </asm>

LZ3 music restore, the modern way

now find: <asm> loc_18112: move.w #$82,d0 jsr (PlaySound).l ; play LZ music </asm> and change it to: <asm> loc_18112: move.w ($FFFFFF90).w,d0 jsr (PlaySound).l ; play LZ music </asm>

MZ3 music restore, the modern way

now find: <asm> loc_1856C: clr.w $12(a0) move.w #$83,d0 jsr (PlaySound).l ; play MZ music </asm> and change it to: <asm> loc_1856C: clr.w $12(a0) move.w ($FFFFFF90).w,d0 jsr (PlaySound).l ; play MZ music </asm>

SLZ3 music restore, the modern way

now find: <asm> loc_18BB4: clr.w $12(a0) move.w #$84,d0 jsr (PlaySound).l ; play SLZ music </asm> and change it to: <asm> loc_18BB4: clr.w $12(a0) move.w ($FFFFFF90).w,d0 jsr (PlaySound).l ; play SLZ music </asm>

SYZ3 music restore, the modern way

find: <asm> loc_194E0: clr.w $12(a0) move.w #$85,d0 jsr (PlaySound).l ; play SYZ music </asm> and change it to: <asm> loc_194E0: clr.w $12(a0) move.w ($FFFFFF90).w,d0 jsr (PlaySound).l ; play SYZ music </asm>

SBZ2 Cut scene, Sonic & Knuckles style

that fixes the boss music, though you could choose different music per-level if you wish within this part of the how-to. Next we will fix the cut scene just before SBZ3, and I would choose to have that music be SBZ music, to have an effect like the cut scenes in s&k. So find: <asm> Obj3A_SBZ2: ; XREF: Obj3A_ChkPos2 cmpi.b #4,$1A(a0) bne.w DeleteObject addq.b #2,$24(a0) clr.b ($FFFFF7CC).w ; unlock controls move.w #$8D,d0 jmp (PlaySound).l ; play FZ music </asm> and change it to <asm> Obj3A_SBZ2: ; XREF: Obj3A_ChkPos2 cmpi.b #4,$1A(a0) bne.w DeleteObject addq.b #2,$24(a0) clr.b ($FFFFF7CC).w ; unlock controls move.w ($FFFFFF90).w,d0 jmp (PlaySound).l ; play level music </asm>

Air countdown music

that causes the game to use whatever music the level started with, but now we need to fix the air counter music, so find: <asm> move.w #$92,d0 jsr (PlaySound).l ; play countdown music

loc_13F02: </asm> and change it to: <asm> move.w #$31,d0 jsr (PlaySound).l ; play countdown music

loc_13F02: </asm> this uses the sonic 3 version of the underwater counter music, or you can use a custom one in a location of your own choice. Now lets fix the sound effects.

Fixing the sound effects so that they sound right, or at least close to right

So now we have all the music and a few sounds fixed, but what about the general sound effects (A0 - CF in sonic 1). Sound effects in sonic 3 start at 33 and end at DC, so lets fix them in sonic 1 order, starting with the jump sound, so find:

===Sound $A0===