|
|
(40 intermediate revisions by 5 users not shown) |
Line 1: |
Line 1: |
− | {{GuideBy|Kram1024}}<br> | + | {{GuideBy|Kram1024}} |
| | | |
− | You probably saw my method of placing the sonic3 sound driver in sonic 1. Well, we are going to put it in sonic2 Rev01 this time. The changes are very similar to that of the sonic1 port. over the years I found that the s3 driver actually works without a sonic game with minimal hacking (it just needs a wait routine to time it.) Thus it is actually possible to put it into sonic2 with rather ease as well and into a homebrew too, though in homebrew it might not be legal anyways due to IP laws but sega no longer enforces them on genesis games anyways, thus why nobody gets sued for sonic hacks, but lets get back to the hack. | + | '''Updated and fixed by''' [[User:WBilgini]] |
| + | |
| + | You probably saw my method of placing the Sonic 3 sound driver in Sonic 1. Well, we are going to put it in Sonic 2 Rev01 this time. The changes are very similar to that of the Sonic 1 port. Over the years, I found that the S3 driver actually works without a Sonic game with minimal hacking (it just needs a wait routine to time it). Thus it is actually possible to put it into Sonic 2 with relative ease as well and into a homebrew too, though in homebrew it might not be legal anyways due to IP laws but Sega no longer enforces them on Genesis games anyways, thus why nobody gets sued for Sonic hacks, but let's get back to the hack. |
| | | |
| ==Overview== | | ==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 latest github version, if you wish to do it via a different version, I am sure you can come up with a way that works by seeing what changes I made in the github version. | + | 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 latest [[Disassemblies#Revision_01|Github version of Sonic 2]], if you wish to do it via a different version, I am sure you can come up with a way that works by seeing what changes I made in the Github version. |
| | | |
− | ==Preparing to use Sonic 3/K/3K sound system== | + | ==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. | + | 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 all callbacks to the s2 driver in the vertical interupt=== | + | ===Removal of all Callbacks to the S2 Driver in the Vertical Interrupt=== |
− | Unlike the s1 driver, sonic2 actually calls the driver over and over again after stopping the z80 then restarting the z80. The playsound routine of our new driver will do that automatically, so we do not really need any of that kind of code. | + | Unlike the S1 driver, Sonic 2 actually calls the driver over and over again after stopping the Z80 then restarting the Z80. The PlaySound routine of our new driver will do that automatically, so we do not really need any of that kind of code. |
− | we will search for all instances of:
| + | We will search for all instances of: |
− | <asm> | + | <pre> |
| stopZ80 ; stop the Z80 | | stopZ80 ; stop the Z80 |
| bsr.w sndDriverInput ; give input to the sound driver | | bsr.w sndDriverInput ; give input to the sound driver |
| startZ80 ; start the Z80 | | startZ80 ; start the Z80 |
− | </asm> | + | </pre> |
− | and comment it out or just plain remove it. I prefer to replace it with a nop instruction, but even comments or removal work as well. | + | and comment it out or just plain remove it. I prefer to replace it with a nop instruction, but even comments or removal work as well. |
− | In case you are a little lazy, here is a list of routines with this code:<br> | + | In case you are a little lazy, here is a list of routines with this code: |
− | '''VintSub0'''<br> | + | *'''VintSub0''' |
− | '''Loc_54A'''<br> | + | *'''Loc_54A''' |
− | '''Vint0_noWater''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br> | + | *'''Vint0_noWater''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line) |
− | '''loc_748''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line)<br> | + | *'''loc_748''' (only touch the " bsr.w sndDriverInput ; give input to the sound driver" line) |
− | '''Vint10_specialStage''' (only touch the " jsr (sndDriverInput).l)<br> | + | *'''Vint_Pause_specialStage''' (only touch the " jsr (sndDriverInput).l) |
− | '''loc_92A+++++''' (only touch the " jsr (sndDriverInput).l)<br> | + | *'''off_97A''' (only touch the " jsr (sndDriverInput).l) |
− | '''loc_BD6''' (only touch the " jsr (sndDriverInput).l)<br> | + | *'''loc_BD6''' (only touch the " jsr (sndDriverInput).l) |
− | '''VintSub18''' (only touch the " bsr.w sndDriverInput)<br> | + | *'''VintSub18''' (only touch the " bsr.w sndDriverInput) |
− | '''VintSub16''' (only touch the " bsr.w sndDriverInput)<br> | + | *'''VintSub16''' (only touch the " bsr.w sndDriverInput) |
− | '''Loc_EFE''' (only touch the " bsr.w sndDriverInput)<br> | + | *'''Loc_EFE''' (only touch the " bsr.w sndDriverInput) |
| | | |
| ===Removal of sndDriverInput=== | | ===Removal of sndDriverInput=== |
− | Okay, we disabled the sonic2 z80 sound driver junk, but we still have a vestage of the old driver taking up valuable rom space. Locate: | + | Okay, we disabled the Sonic 2 Z80 sound driver junk, but we still have a vestige of the old driver taking up valuable ROM space. Locate: |
− | <asm> | + | <pre> |
| sndDriverInput: | | sndDriverInput: |
| lea (Music_to_play&$00FFFFFF).l,a0 | | lea (Music_to_play&$00FFFFFF).l,a0 |
− | lea (Z80_RAM+zComRange).l,a1 ; $A01B80 | + | lea (Z80_RAM+zAbsVar).l,a1 ; $A01B80 |
− | cmpi.b #$80,8(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request. | + | cmpi.b #$80,zVar.QueueToPlay(a1) ; If this (zReadyFlag) isn't $80, the driver is processing a previous sound request. |
| bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there. | | bne.s loc_10C4 ; So we'll wait until at least the next frame before putting anything in there. |
| _move.b 0(a0),d0 | | _move.b 0(a0),d0 |
Line 51: |
Line 53: |
| loc_10AE: ; Check that the sound is not FE or FF | | loc_10AE: ; Check that the sound is not FE or FF |
| move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively | | move.b d0,d1 ; If it is, we need to put it in $A01B83 as $7F or $80 respectively |
− | subi.b #$FE,d1 | + | subi.b #MusID_Pause,d1 |
| bcs.s loc_10C0 | | bcs.s loc_10C0 |
| addi.b #$7F,d1 | | addi.b #$7F,d1 |
− | move.b d1,3(a1) | + | move.b d1,zVar.StopMusic(a1) |
| bra.s loc_10C4 | | bra.s loc_10C4 |
| ; --------------------------------------------------------------------------- | | ; --------------------------------------------------------------------------- |
| | | |
| loc_10C0: | | loc_10C0: |
− | move.b d0,8(a1) | + | move.b d0,zVar.QueueToPlay(a1) |
| | | |
| loc_10C4: | | loc_10C4: |
Line 66: |
Line 68: |
| - move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown) | | - move.b 1(a0,d1.w),d0 ; FFE3 (unk_FFE3) goes to 1B8B, (unknown) |
| beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2), | | beq.s + ; FFE2 (SFX_to_play_2) goes to 1B8A (zSFXToPlay2), |
− | tst.b 9(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay). | + | tst.b zVar.SFXToPlay(a1,d1.w) ; FFE1 (SFX_to_play) goes to 1B89 (zSFXToPlay). |
| bne.s + | | bne.s + |
| clr.b 1(a0,d1.w) | | clr.b 1(a0,d1.w) |
− | move.b d0,9(a1,d1.w) | + | move.b d0,zVar.SFXToPlay(a1,d1.w) |
| + | | + |
| dbf d1,- | | dbf d1,- |
| rts | | rts |
| ; End of function sndDriverInput | | ; End of function sndDriverInput |
− | </asm> | + | </pre> |
− | and remove it. We don't need it anymore because the sonic 3 driver does this stuff on its own in its own way | + | and remove it. We don't need it anymore because the Sonic 3 driver does this stuff on its own, in its own way. |
| | | |
− | ==Upgrading the Load Driver Routine== | + | ==Upgrading the SoundDriverLoad Routine== |
− | Okay now we are finally ready to install the sonic 3 sound driver itself. SoundDriverLoad is located at the end of the rom in sonic2 instead of the beginning, but we have some artwork entangled with it as well. We will have to relocated it while we insert the new code. Locate: <asm> | + | Okay, now we are finally ready to install the Sonic 3 sound driver itself. SoundDriverLoad is located at the end of the ROM in Sonic 2 instead of the beginning, but we have some artwork entangled with it as well. We will have to relocate it while we insert the new code. |
− | ; ---------------------------------------------------------------------------
| |
− | ; Subroutine to load the sound driver
| |
− | ; ---------------------------------------------------------------------------
| |
− | ; sub_EC000:
| |
− | SoundDriverLoad:
| |
− | move sr,-(sp)
| |
− | movem.l d0-a6,-(sp)
| |
− | move #$2700,sr
| |
− | lea (Z80_Bus_Request).l,a3
| |
− | lea (Z80_Reset).l,a2
| |
− | moveq #0,d2
| |
− | move.w #$100,d1
| |
− | move.w d1,(a3) ; get Z80 bus
| |
− | move.w d1,(a2) ; release Z80 reset (was held high by console on startup)
| |
− | - btst d2,(a3)
| |
− | bne.s - ; wait until the 68000 has the bus
| |
− | jsr DecompressSoundDriver(pc)
| |
− | btst #0,(VDP_control_port+1).l ; check video mode
| |
− | sne (Z80_RAM+zPalModeByte).l ; set if PAL
| |
− | move.w d2,(a2) ; hold Z80 reset
| |
− | move.w d2,(a3) ; release Z80 bus
| |
− | moveq #$E6,d0
| |
− | - dbf d0,- ; wait for 2,314 cycles
| |
− | move.w d1,(a2) ; release Z80 reset
| |
− | movem.l (sp)+,d0-a6
| |
− | move (sp)+,sr
| |
− | rts
| |
| | | |
− | ; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||
| + | Delete everything from SoundDriverLoad until the line "; end of 'ROM'" |
− | ; slightly modified Saxman decompression of the sound driver
| |
− | ; a4 == $A00000 (start of Z80 RAM) | |
− | ; a5 == current position in Z80 RAM?
| |
− | ; a6 == current position in compressed sound driver?
| |
− | ; d0 == data to decompress? (byte)
| |
− | ; d4 == ???
| |
− | ; d5 == ???
| |
− | ; d6 == ???
| |
− | ; d7 == bytes left to decompress
| |
− | ; loc_EC04A:
| |
− | DecompressSoundDriver:
| |
− | lea Snd_Driver(pc),a6
| |
− | ; WARNING: the build script needs editing if you rename this label
| |
− | movewZ80CompSize: move.w #Snd_Driver_End-Snd_Driver,d7 ; patched (by fixpointer.exe) after compression since the exact size can't be known beforehand
| |
− | moveq #0,d6
| |
− | lea (Z80_RAM).l,a5
| |
− | moveq #0,d5
| |
− | lea (Z80_RAM).l,a4
| |
| | | |
− | loc_EC062:
| + | In its place, paste the code inside this file: |
− | lsr.w #1,d6
| |
− | btst #8,d6
| |
− | bne.s +
| |
− | jsr sub_EC0DE(pc)
| |
− | move.b d0,d6
| |
− | ori.w #$FF00,d6
| |
− | +
| |
− | btst #0,d6
| |
− | beq.s loc_EC086
| |
− | jsr sub_EC0DE(pc)
| |
− | move.b d0,(a5)+
| |
− | addq.w #1,d5
| |
− | bra.w loc_EC062
| |
− | ; ---------------------------------------------------------------------------
| |
| | | |
− | loc_EC086:
| + | {{Download|file=SoundDriverLoadCode.asm|filesize=54kb|title=The Sonic 3 Sound Driver Load code|plural=0}} |
− | jsr sub_EC0DE(pc)
| + | '''Note:''' Linux systems and some mac installs have a case sensitive filesystem and that can cause build errors,<br> |
− | moveq #0,d4
| + | to fix, simply rename all non-sound effects to lowercase names. |
− | move.b d0,d4
| |
− | jsr sub_EC0DE(pc)
| |
− | move.b d0,d3
| |
− | andi.w #$F,d3
| |
− | addq.w #2,d3
| |
− | andi.w #$F0,d0
| |
− | lsl.w #4,d0
| |
− | add.w d0,d4
| |
− | addi.w #$12,d4
| |
− | andi.w #$FFF,d4
| |
− | move.w d5,d0
| |
− | andi.w #$F000,d0
| |
− | add.w d0,d4
| |
− | cmp.w d4,d5
| |
− | bhs.s loc_EC0CC
| |
− | subi.w #$1000,d4
| |
− | bcc.s loc_EC0CC
| |
− | add.w d3,d5
| |
− | addq.w #1,d5
| |
− | | |
− | - move.b #0,(a5)+
| |
− | dbf d3,-
| |
− | | |
− | bra.w loc_EC062
| |
− | ; ---------------------------------------------------------------------------
| |
− | | |
− | loc_EC0CC:
| |
− | add.w d3,d5
| |
− | addq.w #1,d5
| |
− | | |
− | - move.b (a4,d4.w),(a5)+
| |
− | addq.w #1,d4
| |
− | dbf d3,-
| |
− | | |
− | bra.w loc_EC062
| |
− | ; End of function DecompressSoundDriver
| |
| | | |
| + | ==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 PlayMusic routine, locate: |
| + | <pre> |
| ; ||||||||||||||| S U B R O U T I N E ||||||||||||||||||||||||||||||||||||||| | | ; ||||||||||||||| S U B R O U T I N E ||||||||||||||||||||||||||||||||||||||| |
− | | + | ; If Music_to_play is clear, move d0 into Music_to_play, |
− | | + | ; else move d0 into Music_to_play_2. |
− | sub_EC0DE:
| + | ; sub_135E: |
− | move.b (a6)+,d0 | + | PlayMusic: |
− | subq.w #1,d7
| + | tst.b (Music_to_play).w |
| bne.s + | | bne.s + |
− | addq.w #4,sp | + | move.b d0,(Music_to_play).w |
| + | rts |
| + | | + |
| + | move.b d0,(Music_to_play_2).w |
| rts | | rts |
− | ; End of function sub_EC0DE | + | ; End of function PlayMusic |
− | | + | </pre> |
− | ; ===========================================================================
| + | and we will replace it with '''this''' code: |
| + | <pre> |
| ; --------------------------------------------------------------------------- | | ; --------------------------------------------------------------------------- |
− | ; S2 sound driver (Sound driver compression (slightly modified Saxman)) | + | ; Subroutine to play a music track |
| ; --------------------------------------------------------------------------- | | ; --------------------------------------------------------------------------- |
− | ; loc_EC0E8:
| |
− | Snd_Driver:
| |
− | save
| |
− | include "s2.sounddriver.asm" ; CPU Z80
| |
− | restore
| |
− | padding off
| |
− | !org (Snd_Driver+Size_of_Snd_driver_guess) ; don't worry; I know what I'm doing
| |
| | | |
| + | ; ||||||||||||||| S U B R O U T I N E ||||||||||||||||||||||||||||||||||||||| |
| | | |
− | ; loc_ED04C:
| |
− | Snd_Driver_End:
| |
| | | |
| + | PlayMusic: |
| + | cmpi.w #$FB,d0 |
| + | blt.s ++ |
| + | bhi.s + |
| + | move #8,d0 |
| + | jmp SetTempo |
| + | + cmpi.w #$FC,d0 |
| + | bne.s + |
| + | clr.w d0 |
| + | jmp SetTempo |
| | | |
| + | + stopZ80 |
| + | move.b d0,($A01C0A).l |
| + | startZ80 |
| + | rts |
| + | ; End of function PlaySound |
| + | </pre> |
| | | |
| + | ===Upgrade Sound Routines=== |
| + | now find: |
| + | <pre> |
| + | ; ||||||||||||||| S U B R O U T I N E ||||||||||||||||||||||||||||||||||||||| |
| + | ; play a sound if the source is onscreen |
| + | ; sub_137C: |
| + | PlaySoundLocal: |
| + | tst.b render_flags(a0) |
| + | bpl.s + ; rts |
| + | move.b d0,(SFX_to_play).w |
| + | + |
| + | rts |
| + | ; End of function PlaySoundLocal |
| + | </pre> |
| + | and replace it with: |
| + | <pre> |
| + | ; ||||||||||||||| S U B R O U T I N E ||||||||||||||||||||||||||||||||||||||| |
| + | ; play a sound if the source is onscreen |
| + | ; sub_137C: |
| + | PlaySoundLocal: |
| + | tst.b render_flags(A0) |
| + | bpl.s SkipPlaySound |
| + | bra.s PlaySound |
| + | ; End of function PlaySoundLocal |
| + | </pre> |
| + | now we will find: |
| + | <pre> |
| + | ; ||||||||||||||| S U B R O U T I N E ||||||||||||||||||||||||||||||||||||||| |
| | | |
− | ; --------------------------------------------------------------------------- | + | ; sub_1370 |
− | ; Filler (free space)
| + | PlaySound: |
− | ; ---------------------------------------------------------------------------
| + | move.b d0,(SFX_to_play).w |
− | ; the DAC data has to line up with the end of the bank.
| + | rts |
| + | ; End of function PlaySound |
| | | |
− | ; actually it only has to fit within one bank, but we'll line it up to the end anyway
| |
− | ; because the padding gives the sound driver some room to grow
| |
− | cnop -Size_of_DAC_samples, $8000
| |
| | | |
− | ; --------------------------------------------------------------------------- | + | ; ||||||||||||||| S U B R O U T I N E ||||||||||||||||||||||||||||||||||||||| |
− | ; DAC samples | + | ; play a sound in alternating speakers (as in the ring collection sound) |
− | ; --------------------------------------------------------------------------- | + | ; sub_1376: |
− | ; loc_ED100: | + | PlaySoundStereo: |
− | SndDAC_Start:
| + | move.b d0,(SFX_to_play_2).w |
| + | rts |
| + | ; End of function PlaySoundStereo |
| + | </pre> |
| + | and replace it with: |
| + | <pre> |
| + | ; ||||||||||||||| S U B R O U T I N E ||||||||||||||||||||||||||||||||||||||| |
| | | |
− | SndDAC_Sample1:
| + | ; sub_1370 |
− | BINCLUDE "sound/DAC/Sample 1.bin"
| + | PlaySound: |
− | SndDAC_Sample1_End
| + | stopZ80 |
| + | cmp.b ($A01C0B).l,d0 |
| + | beq.s ++ |
| + | tst.b ($A01C0B).l |
| + | bne.s + |
| + | move.b d0,($A01C0B).l |
| + | startZ80 |
| + | rts |
| | | |
− | SndDAC_Sample2:
| + | + move.b d0,($A01C0C).l |
− | BINCLUDE "sound/DAC/Sample 2.bin" | |
− | SndDAC_Sample2_End
| |
| | | |
− | SndDAC_Sample5:
| + | + move.w #0,($A11100).l |
− | BINCLUDE "sound/DAC/Sample 5.bin" | |
− | SndDAC_Sample5_End
| |
| | | |
− | SndDAC_Sample6:
| + | SkipPlaySound: |
− | BINCLUDE "sound/DAC/Sample 6.bin"
| + | rts |
− | SndDAC_Sample6_End
| + | ; End of function PlaySound |
| | | |
− | SndDAC_Sample3:
| |
− | BINCLUDE "sound/DAC/Sample 3.bin"
| |
− | SndDAC_Sample3_End
| |
| | | |
− | SndDAC_Sample4:
| + | ; ||||||||||||||| S U B R O U T I N E ||||||||||||||||||||||||||||||||||||||| |
− | BINCLUDE "sound/DAC/Sample 4.bin"
| + | ; play a sound in alternating speakers (as in the ring collection sound) |
− | SndDAC_Sample4_End
| + | ; sub_1376: |
| + | PlaySoundStereo: |
| + | bra.s PlaySound |
| + | ; End of function PlaySoundStereo |
| | | |
− | SndDAC_Sample7:
| + | ; ||||||||||||||| S U B R O U T I N E ||||||||||||||||||||||||||||||||||||||| |
− | BINCLUDE "sound/DAC/Sample 7.bin"
| + | ; change the music tempo |
− | SndDAC_Sample7_End
| |
| | | |
− | SndDAC_End
| + | SetTempo: |
| + | stopZ80 |
| + | move.b D0,($A01C08).l |
| + | startZ80 |
| + | rts |
| | | |
− | if SndDAC_End - SndDAC_Start > $8000
| + | </pre> |
− | fatal "DAC samples must fit within $8000 bytes, but you have $\{SndDAC_End-SndDAC_Start } bytes of DAC samples."
| + | |
− | endif
| + | ==Upgrading Pause / Resume Routines== |
− | if SndDAC_End - SndDAC_Start > Size_of_DAC_samples
| + | 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. |
− | fatal "Size_of_DAC_samples = $\{Size_of_DAC_samples}, but you have $\{SndDAC_End-SndDAC_Start} bytes of DAC samples."
| |
− | endif
| |
| | | |
| + | Find: |
| + | <pre> |
| ; --------------------------------------------------------------------------- | | ; --------------------------------------------------------------------------- |
− | ; Music pointers | + | ; Subroutine to pause the game |
| ; --------------------------------------------------------------------------- | | ; --------------------------------------------------------------------------- |
− | align $8000
| |
| | | |
− | ; loc_F0000: | + | ; ||||||||||||||| S U B R O U T I N E ||||||||||||||||||||||||||||||||||||||| |
− | MusicPoint1:
| |
− | MusPtr_Continue: rom_ptr_z80 Mus_Continue-MusicPoint2
| |
| | | |
| + | ; sub_1388: |
| + | PauseGame: |
| + | nop |
| + | tst.b (Life_count).w ; do you have any lives left? |
| + | beq.w Unpause ; if not, branch |
| + | tst.w (Game_paused).w ; is game already paused? |
| + | bne.s + ; if yes, branch |
| + | move.b (Ctrl_1_Press).w,d0 ; is Start button pressed? |
| + | or.b (Ctrl_2_Press).w,d0 ; (either player) |
| + | andi.b #button_start_mask,d0 |
| + | beq.s Pause_DoNothing ; if not, branch |
| + | + |
| + | move.w #1,(Game_paused).w ; freeze time |
| + | move.b #MusID_Pause,(Music_to_play).w ; pause music |
| + | ; loc_13B2: |
| + | Pause_Loop: |
| + | move.b #$10,(Vint_routine).w |
| + | bsr.w WaitForVint |
| + | tst.b (Slow_motion_flag).w ; is slow-motion cheat on? |
| + | beq.s Pause_ChkStart ; if not, branch |
| + | btst #button_A,(Ctrl_1_Press).w ; is button A pressed? |
| + | beq.s Pause_ChkBC ; if not, branch |
| + | move.b #GameModeID_TitleScreen,(Game_Mode).w ; => TitleScreen |
| + | nop |
| + | bra.s Pause_Resume |
| + | ; =========================================================================== |
| + | ; loc_13D4: |
| + | Pause_ChkBC: |
| + | btst #button_B,(Ctrl_1_Held).w ; is button B pressed? |
| + | bne.s Pause_SlowMo ; if yes, branch |
| + | btst #button_C,(Ctrl_1_Press).w ; is button C pressed? |
| + | bne.s Pause_SlowMo ; if yes, branch |
| + | ; loc_13E4: |
| + | Pause_ChkStart: |
| + | move.b (Ctrl_1_Press).w,d0 ; is Start button pressed? |
| + | or.b (Ctrl_2_Press).w,d0 ; (either player) |
| + | andi.b #button_start_mask,d0 |
| + | beq.s Pause_Loop ; if not, branch |
| + | ; loc_13F2: |
| + | Pause_Resume: |
| + | move.b #MusID_Unpause,(Music_to_play).w |
| + | ; loc_13F8: |
| + | Unpause: |
| + | move.w #0,(Game_paused).w |
| + | ; return_13FE: |
| + | Pause_DoNothing: |
| + | rts |
| + | ; =========================================================================== |
| + | ; loc_1400: |
| + | Pause_SlowMo: |
| + | move.w #1,(Game_paused).w |
| + | move.b #MusID_Unpause,(Music_to_play).w |
| + | rts |
| + | ; End of function PauseGame |
| + | </pre> |
| + | and replace it with: |
| + | <pre> |
| + | ; --------------------------------------------------------------------------- |
| + | ; Subroutine to pause the game |
| + | ; --------------------------------------------------------------------------- |
| | | |
− | Mus_Continue: BINCLUDE "sound/music/Continue.bin"
| + | ; ||||||||||||||| S U B R O U T I N E ||||||||||||||||||||||||||||||||||||||| |
| | | |
− | ; -------------------------------------------------------------------- | + | ; sub_1388: |
− | ; Nemesis compressed art (20 blocks)
| + | PauseGame: |
− | ; Buzzer's fireball
| + | nop |
− | ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"
| + | tst.b (Life_count).w |
− | ; --------------------------------------------------------------------
| + | beq Unpause |
− | ; Nemesis compressed art (24 blocks)
| + | tst.w (Game_paused).w |
− | ; Waterfall tiles
| + | bne.s + |
− | ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"
| + | move.b (Ctrl_1_Press).w,d0 |
− | ; --------------------------------------------------------------------
| + | or.b (Ctrl_2_Press).w,d0 |
− | ; Nemesis compressed art (16 blocks)
| + | andi.b #$80,d0 |
− | ; Another fireball
| + | beq Pause_DoNothing |
− | ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"
| + | + move.w #1,(Game_paused).w |
− | ; --------------------------------------------------------------------
| + | stopZ80 |
− | ; Nemesis compressed art (8 blocks)
| + | move.b #1,($A01C10).l |
− | ; Bridge in EHZ
| + | startZ80 |
− | ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (48 blocks)
| |
− | ; Diagonally moving lift in HTZ
| |
− | ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (4 blocks)
| |
− | ; One way barrier from HTZ
| |
− | ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (24 blocks)
| |
− | ; See-saw in HTZ
| |
− | ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (24 blocks)
| |
− | ; Unused Fireball
| |
− | ;ArtNem_F0B06:
| |
− | BINCLUDE "art/nemesis/Fireball 3.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (20 blocks)
| |
− | ; Rock from HTZ
| |
− | ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (4 blocks)
| |
− | ; Orbit badnik from HTZ ; ArtNem_HtzSol:
| |
− | ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (120 blocks)
| |
− | ; Large spinning wheel from MTZ
| |
− | ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (9 blocks)
| |
− | ; Indent in large spinning wheel from MTZ
| |
− | ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (8 blocks)
| |
− | ; Spike block from MTZ
| |
− | ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (15 blocks)
| |
− | ; Steam from MTZ
| |
− | ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (8 blocks)
| |
− | ; Spike from MTZ
| |
− | ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (54 blocks)
| |
− | ; Similarly shaded blocks from MTZ
| |
− | ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (9 blocks)
| |
− | ; Lava bubble from MTZ
| |
− | ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (4 blocks)
| |
− | ; Lava cup
| |
− | ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (8 blocks)
| |
− | ; End of a bolt and rope from MTZ
| |
− | ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (12 blocks)
| |
− | ; Small cog from MTZ
| |
− | ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (4 blocks)
| |
− | ; Unknown. Four blocks that are all the same colour from MTZ.
| |
− | ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (32 blocks)
| |
− | ; Large wooden box from MCZ ; ArtNem_F187C:
| |
− | ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (26 blocks)
| |
− | ; Collapsing platform from MCZ ; ArtNem_F1ABA:
| |
− | ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (16 blocks)
| |
− | ; Switch that you pull on from MCZ ; ArtNem_F1C64:
| |
− | ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (10 blocks)
| |
− | ; Vine that lowers in MCZ ; ArtNem_F1D5C:
| |
− | ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (20 blocks)
| |
− | ; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:
| |
− | ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"
| |
| | | |
− | ; ----------------------------------------------------------------------------------
| + | Pause_Loop: |
− | ; Filler (free space)
| + | move.b #$10,(Vint_routine).w |
− | ; ----------------------------------------------------------------------------------
| + | jsr WaitForVint |
− | ; the PCM data has to line up with the end of the bank.
| + | tst.b (Slow_motion_flag).w |
− | cnop -Size_of_SEGA_sound, $8000
| + | beq.s Pause_ChkStart |
| + | btst #button_A,(Ctrl_1_Press).w |
| + | beq.s Pause_ChkBC |
| + | move.b #GameModeID_TitleScreen,(Game_Mode).w ; Go To Title Screen |
| + | nop |
| + | bra.s Pause_Resume |
| | | |
− | ; -------------------------------------------------------------------------------
| + | Pause_ChkBC: |
− | ; Sega Intro Sound
| + | btst #button_B,(Ctrl_1_Held).w |
− | ; 8-bit unsigned raw audio at 16Khz
| + | bne.s Pause_SlowMo |
− | ; -------------------------------------------------------------------------------
| + | btst #button_C,(Ctrl_1_Press).w |
− | ; loc_F1E8C:
| + | bne.s Pause_SlowMo |
− | Snd_Sega: BINCLUDE "sound/PCM/SEGA.bin"
| |
− | Snd_Sega_End:
| |
| | | |
− | if Snd_Sega_End - Snd_Sega > $8000 | + | Pause_ChkStart: |
− | fatal "Sega sound must fit within $8000 bytes, but you have a $\{Snd_Sega_End-Snd_Sega} byte Sega sound."
| + | move.b (Ctrl_1_Press).w,d0 ; is Start button pressed? |
− | endif | + | or.b (Ctrl_2_Press).w,d0 ; (either player) |
− | if Snd_Sega_End - Snd_Sega > Size_of_SEGA_sound | + | andi.b #button_start_mask,d0 |
− | fatal "Size_of_SEGA_sound = $\{Size_of_SEGA_sound}, but you have a $\{Snd_Sega_End-Snd_Sega} byte Sega sound."
| + | beq.s Pause_Loop ; if not, branch |
− | endif
| |
| | | |
− | ; ------------------------------------------------------------------------------
| + | Pause_Resume: |
− | ; Music pointers
| + | stopZ80 |
− | ; ------------------------------------------------------------------------------
| + | move.b #$80,($A01C10).l |
− | align $8000
| + | startZ80 |
− | soundBankStart := *
| |
| | | |
− | ; loc_F8000:
| + | Unpause: |
− | MusicPoint2:
| + | move.w #0,(Game_paused).w |
− | MusPtr_CNZ_2P: rom_ptr_z80 Mus_CNZ_2P
| |
− | MusPtr_EHZ: rom_ptr_z80 Mus_EHZ
| |
− | MusPtr_MTZ: rom_ptr_z80 Mus_MTZ
| |
− | MusPtr_CNZ: rom_ptr_z80 Mus_CNZ
| |
− | MusPtr_MCZ: rom_ptr_z80 Mus_MCZ
| |
− | MusPtr_MCZ_2P: rom_ptr_z80 Mus_MCZ_2P
| |
− | MusPtr_ARZ: rom_ptr_z80 Mus_ARZ
| |
− | MusPtr_DEZ: rom_ptr_z80 Mus_DEZ
| |
− | MusPtr_SpecStage: rom_ptr_z80 Mus_SpecStage
| |
− | MusPtr_Options: rom_ptr_z80 Mus_Options
| |
− | MusPtr_Ending: rom_ptr_z80 Mus_Ending
| |
− | MusPtr_EndBoss: rom_ptr_z80 Mus_EndBoss
| |
− | MusPtr_CPZ: rom_ptr_z80 Mus_CPZ
| |
− | MusPtr_Boss: rom_ptr_z80 Mus_Boss
| |
− | MusPtr_SCZ: rom_ptr_z80 Mus_SCZ
| |
− | MusPtr_OOZ: rom_ptr_z80 Mus_OOZ
| |
− | MusPtr_WFZ: rom_ptr_z80 Mus_WFZ
| |
− | MusPtr_EHZ_2P: rom_ptr_z80 Mus_EHZ_2P
| |
− | MusPtr_2PResult: rom_ptr_z80 Mus_2PResult
| |
− | MusPtr_SuperSonic: rom_ptr_z80 Mus_SuperSonic
| |
− | MusPtr_HTZ: rom_ptr_z80 Mus_HTZ
| |
− | MusPtr_ExtraLife: rom_ptr_z80 Mus_ExtraLife
| |
− | MusPtr_Title: rom_ptr_z80 Mus_Title
| |
− | MusPtr_EndLevel: rom_ptr_z80 Mus_EndLevel
| |
− | MusPtr_GameOver: rom_ptr_z80 Mus_GameOver
| |
− | MusPtr_Invincible: rom_ptr_z80 Mus_Invincible
| |
− | MusPtr_Emerald: rom_ptr_z80 Mus_Emerald
| |
− | MusPtr_HPZ: rom_ptr_z80 Mus_HPZ
| |
− | MusPtr_Drowning: rom_ptr_z80 Mus_Drowning
| |
− | MusPtr_Credits: rom_ptr_z80 Mus_Credits
| |
| | | |
− | ; loc_F803C:
| + | Pause_DoNothing: |
− | Mus_HPZ: BINCLUDE "sound/music/HPZ.bin"
| + | rts |
− | Mus_Drowning: BINCLUDE "sound/music/Drowning.bin"
| |
− | Mus_Invincible: BINCLUDE "sound/music/Invincible.bin"
| |
− | Mus_CNZ_2P: BINCLUDE "sound/music/CNZ_2p.bin"
| |
− | Mus_EHZ: BINCLUDE "sound/music/EHZ.bin"
| |
− | Mus_MTZ: BINCLUDE "sound/music/MTZ.bin"
| |
− | Mus_CNZ: BINCLUDE "sound/music/CNZ.bin"
| |
− | Mus_MCZ: BINCLUDE "sound/music/MCZ.bin"
| |
− | Mus_MCZ_2P: BINCLUDE "sound/music/MCZ_2p.bin"
| |
− | Mus_ARZ: BINCLUDE "sound/music/ARZ.bin"
| |
− | Mus_DEZ: BINCLUDE "sound/music/DEZ.bin"
| |
− | Mus_SpecStage: BINCLUDE "sound/music/SpecStg.bin"
| |
− | Mus_Options: BINCLUDE "sound/music/Options.bin"
| |
− | Mus_Ending: BINCLUDE "sound/music/Ending.bin"
| |
− | Mus_EndBoss: BINCLUDE "sound/music/End_Boss.bin"
| |
− | Mus_CPZ: BINCLUDE "sound/music/CPZ.bin"
| |
− | Mus_Boss: BINCLUDE "sound/music/Boss.bin"
| |
− | Mus_SCZ: BINCLUDE "sound/music/SCZ.bin"
| |
− | Mus_OOZ: BINCLUDE "sound/music/OOZ.bin"
| |
− | Mus_WFZ: BINCLUDE "sound/music/WFZ.bin"
| |
− | Mus_EHZ_2P: BINCLUDE "sound/music/EHZ_2p.bin"
| |
− | Mus_2PResult: BINCLUDE "sound/music/2player results screen.bin"
| |
− | Mus_SuperSonic: BINCLUDE "sound/music/Supersonic.bin"
| |
− | Mus_HTZ: BINCLUDE "sound/music/HTZ.bin"
| |
− | Mus_Title: BINCLUDE "sound/music/Title screen.bin"
| |
− | Mus_EndLevel: BINCLUDE "sound/music/End of level.bin"
| |
| | | |
− | ; The following act mostly like sound effects
| + | Pause_SlowMo: |
− | ; despite being listed with the music.
| + | move.w #1,(Game_paused).w |
− | ; This means they're uncompressed format with absolute pointers
| + | stopZ80 |
− | ; instead of compressed with relative pointers.
| + | move.b #$80,($A01C10).l |
− | ; Because they have absolute pointers,
| + | startZ80 |
− | ; they have to be assembled rather than BINCLUDE'd. | + | rts |
− | ; See below (right before Sound20) for other notes | + | ; End of function PauseGame |
− | ; about the sound format that apply to these too. | + | </pre> |
| + | now find: |
| + | <pre> |
| + | ; loc_541A: |
| + | SpecialStage_Unpause: |
| + | move.b #MusID_Unpause,(Music_to_play).w |
| + | move.b #8,(Vint_routine).w |
| + | bra.w WaitForVint |
| + | </pre> |
| + | replace the line right after the label with: |
| + | <pre> |
| + | stopZ80 |
| + | move.b #$80,($A01C10).l |
| + | startZ80 |
| + | </pre> |
| | | |
− | ;Mus_ExtraLife: BINCLUDE "sound/music/Extra life.bin"
| + | ==Driver Data Files== |
− | Mus_ExtraLife: dc.w z80_ptr(Mus_EL_Voices),$0603,$02CD
| + | Unpack this into the 'sound' folder and, optionally, remove the original files since we no longer need them anymore: |
− | dc.w z80_ptr(Mus_EL_DAC),$0000
| + | {{Download|file=s3driverdata.7z|filesize=131kb|title=The Sonic 3 Driver data files|plural=1}} |
− | dc.w z80_ptr(Mus_EL_FM1),$E810
| |
− | dc.w z80_ptr(Mus_EL_FM2),$E810
| |
− | dc.w z80_ptr(Mus_EL_FM3),$E810
| |
− | dc.w z80_ptr(Mus_EL_FM4),$E810
| |
− | dc.w z80_ptr(Mus_EL_FM5),$E810
| |
− | dc.w z80_ptr(Mus_EL_PSG1),$D008,$0005
| |
− | dc.w z80_ptr(Mus_EL_PSG2),$DC08,$0005
| |
− | dc.w z80_ptr(Mus_EL_PSG3),$DC00,$0004
| |
− | Mus_EL_FM4: dc.b $E1,$03,$E0,$40,$F6
| |
− | dc.w z80_ptr(+)
| |
− | Mus_EL_FM1: dc.b $E0,$80
| |
− | + dc.b $EF,$00,$E8,$06,$D9,$06,$03,$03,$06,$06
| |
− | dc.b $E8,$00,$DB,$09,$D7,$D6,$06,$D9,$18,$F2
| |
− | Mus_EL_FM2: dc.b $EF,$01,$E8,$06,$E2,$01,$D6,$06,$03,$03,$06,$06
| |
− | dc.b $E8,$00,$D7,$09,$D4,$D2,$06,$D6,$18,$E2,$01,$F2
| |
− | Mus_EL_FM5: dc.b $E1,$03,$E0,$40,$F6
| |
− | dc.w z80_ptr(+)
| |
− | Mus_EL_FM3: dc.b $E0,$80
| |
− | + dc.b $EF,$02,$BA,$0C,$80,$06,$BA,$B8,$80,$03
| |
− | dc.b $B8,$06,$80,$03,$B8,$06,$BA,$18,$F2
| |
− | Mus_EL_PSG1: dc.b $E8,$06,$D6,$06,$03,$03,$06,$06,$E8,$00,$D7,$09
| |
− | dc.b $D4,$D2,$06,$D6,$18
| |
− | Mus_EL_PSG2:
| |
− | Mus_EL_PSG3: dc.b $F2
| |
− | Mus_EL_DAC: dc.b $88,$12,$06,$8B,$09,$09,$06,$88,$06,$8A,$88,$8A
| |
− | dc.b $88,$0C,$E4
| |
− | Mus_EL_Voices: dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E
| |
− | dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$16,$4E,$80
| |
− | dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E
| |
− | dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$27,$28,$80
| |
− | dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E
| |
− | dc.b $03,$00,$00,$00,$07,$1F,$1F,$FF,$0F,$18,$27,$28,$80
| |
| | | |
| + | ==Fixing the Music and Sound Effects== |
| + | Now we will open s2.constants.asm. |
| + | ===Music=== |
| + | Go to '''MusID__First''' and you will notice '''this''': |
| + | <pre> |
| + | ; Music IDs |
| + | offset := zMasterPlaylist |
| + | ptrsize := 1 |
| + | idstart := $81 |
| + | ; $80 is reserved for silence, so if you make idstart $80 or less, |
| + | ; you may need to insert a dummy zMusIDPtr in the $80 slot |
| | | |
− | ;Mus_GameOver: BINCLUDE "sound/music/Game over.bin" | + | MusID__First = idstart |
− | Mus_GameOver: dc.w z80_ptr(MusGO_Voices),$0603,$02F2
| + | MusID_2PResult = id(zMusIDPtr_2PResult) ; 81 |
− | dc.w z80_ptr(MusGOver_DAC),$0000
| + | MusID_EHZ = id(zMusIDPtr_EHZ) ; 82 |
− | dc.w z80_ptr(MusGOver_FM1),$E80A
| + | MusID_MCZ_2P = id(zMusIDPtr_MCZ_2P) ; 83 |
− | dc.w z80_ptr(MusGOver_FM2),$F40F
| + | MusID_OOZ = id(zMusIDPtr_OOZ) ; 84 |
− | dc.w z80_ptr(MusGOver_FM3),$F40F
| + | MusID_MTZ = id(zMusIDPtr_MTZ) ; 85 |
− | dc.w z80_ptr(MusGOver_FM4),$F40D
| + | MusID_HTZ = id(zMusIDPtr_HTZ) ; 86 |
− | dc.w z80_ptr(MusGOver_FM5),$DC16
| + | MusID_ARZ = id(zMusIDPtr_ARZ) ; 87 |
− | dc.w z80_ptr(MusGOver_PSG),$D003,$0005
| + | MusID_CNZ_2P = id(zMusIDPtr_CNZ_2P) ; 88 |
− | dc.w z80_ptr(MusGOver_PSG),$DC06,$0005
| + | MusID_CNZ = id(zMusIDPtr_CNZ) ; 89 |
− | dc.w z80_ptr(MusGOver_PSG),$DC00,$0004
| + | MusID_DEZ = id(zMusIDPtr_DEZ) ; 8A |
− | MusGOver_FM1: dc.b $EF,$00
| + | MusID_MCZ = id(zMusIDPtr_MCZ) ; 8B |
− | dc.b $F0,$20,$01,$04,$05
| + | MusID_EHZ_2P = id(zMusIDPtr_EHZ_2P) ; 8C |
− | dc.b $80,$0C,$CA,$12,$80,$06,$CA,$80,$CB,$12,$C8,$1E
| + | MusID_SCZ = id(zMusIDPtr_SCZ) ; 8D |
− | dc.b $CA,$06,$80,$CA,$80,$CA,$80,$C6,$80,$C4,$12,$C8
| + | MusID_CPZ = id(zMusIDPtr_CPZ) ; 8E |
− | dc.b $0C,$80,$12,$C9,$04,$80,$C9,$C8,$06,$80,$C7,$80
| + | MusID_WFZ = id(zMusIDPtr_WFZ) ; 8F |
− | dc.b $C6,$80
| + | MusID_HPZ = id(zMusIDPtr_HPZ) ; 90 |
− | dc.b $F0,$28,$01,$18,$05
| + | MusID_Options = id(zMusIDPtr_Options) ; 91 |
− | dc.b $C5,$60,$F2
| + | MusID_SpecStage = id(zMusIDPtr_SpecStage) ; 92 |
− | MusGOver_FM2: dc.b $EF,$01,$80,$01,$D9,$06,$80,$D9,$80,$D6,$80,$D6
| + | MusID_Boss = id(zMusIDPtr_Boss) ; 93 |
− | dc.b $80,$D7,$15,$D7,$1B,$D9,$06,$80,$D9,$80,$D6,$80
| + | MusID_EndBoss = id(zMusIDPtr_EndBoss) ; 94 |
− | dc.b $D6,$80,$DC,$15,$DC,$1B,$F2
| + | MusID_Ending = id(zMusIDPtr_Ending) ; 95 |
− | MusGOver_FM3: dc.b $EF,$01,$D6,$0C,$D6,$D2,$D2,$D4,$15,$D4,$1B,$D6
| + | MusID_SuperSonic = id(zMusIDPtr_SuperSonic); 96 |
− | dc.b $0C,$D6,$D2,$D2,$D7,$15,$D7,$1B,$F2
| + | MusID_Invincible = id(zMusIDPtr_Invincible); 97 |
− | MusGOver_FM4: dc.b $EF,$02,$E2,$01,$AE,$06,$80,$AE,$80,$A9,$80,$A9
| + | MusID_ExtraLife = id(zMusIDPtr_ExtraLife) ; 98 |
− | dc.b $80,$AC,$15,$AB,$0C,$AC,$03,$AB,$0C,$AE,$06,$80
| + | MusID_Title = id(zMusIDPtr_Title) ; 99 |
− | dc.b $AE,$80,$A9,$80,$A9,$80,$B3,$15,$B2,$0C,$B3,$03
| + | MusID_EndLevel = id(zMusIDPtr_EndLevel) ; 9A |
− | dc.b $B2,$0C,$AE,$04,$80,$AE,$AD,$06,$80,$AC,$80,$AB
| + | MusID_GameOver = id(zMusIDPtr_GameOver) ; 9B |
− | dc.b $80,$AB,$60,$E2,$01,$F2
| + | MusID_Continue = id(zMusIDPtr_Continue) ; 9C |
− | MusGOver_FM5: dc.b $EF,$03,$80,$30,$D7,$12,$80,$03,$D7,$1B,$80,$30
| + | MusID_Emerald = id(zMusIDPtr_Emerald) ; 9D |
− | dc.b $DC,$12,$80,$03,$DC,$1B
| + | MusID_Credits = id(zMusIDPtr_Credits) ; 9E |
− | MusGOver_PSG: dc.b $F2
| + | MusID_Countdown = id(zMusIDPtr_Countdown) ; 9F |
− | MusGOver_DAC: dc.b $80,$18,$81
| + | MusID__End = id(zMusIDPtr__End) ; A0 |
− | dc.b $F7,$00,$04
| + | </pre> |
− | dc.w z80_ptr(MusGOver_DAC)
| + | That may be good if you were using the Sonic 2 driver, but obviously you are not, so we need to change it. |
− | dc.b $F2
| + | <pre> |
− | MusGO_Voices: dc.b $3A,$51,$51,$08,$02,$1E,$1E,$1E,$10,$1F,$1F,$1F
| + | MusID__First = 1 |
− | dc.b $0F,$00,$00,$00,$02,$0F,$0F,$0F,$1F,$18,$22,$24,$81
| + | MusID_AIZ1 = 1 |
− | dc.b $3C,$33,$73,$30,$70,$94,$96,$9F,$9F,$12,$14,$00
| + | MusID_AIZ2 = 2 |
− | dc.b $0F,$04,$04,$0A,$0D,$2F,$4F,$0F,$2F,$33,$1A,$80,$80
| + | MusID_HCZ1 = 3 |
− | dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E
| + | MusID_HCZ2 = 4 |
− | dc.b $03,$00,$00,$00,$07,$1F,$1F,$FF,$0F,$1C,$27,$28,$80
| + | MusID_MGZ1 = 5 |
− | dc.b $1F,$66,$53,$31,$22,$1C,$1F,$98,$1F,$12,$0F,$0F
| + | MusID_MGZ2 = 6 |
− | dc.b $0F,$00,$00,$00,$00,$FF,$0F,$0F,$0F,$8C,$8A,$8D,$8B
| + | MusID_CNZ1 = 7 |
| + | MusID_CNZ2 = 8 |
| + | MusID_FBZ1 = 9 |
| + | MusID_FBZ2 = $A |
| + | MusID_ICZ1 = $B |
| + | MusID_ICZ2 = $C |
| + | MusID_LBZ1 = $D |
| + | MusID_LBZ2 = $E |
| + | MusID_MHZ1 = $F |
| + | MusID_MHZ2 = $10 |
| + | MusID_SZ1 = $11 |
| + | MusID_SZ2 = $12 |
| + | MusID_LRZ1 = $13 |
| + | MusID_LRZ2 = $14 |
| + | MusID_SSZ = $15 |
| + | MusID_DEZ1 = $16 |
| + | MusID_DEZ2 = $17 |
| + | MusID_MBSK = $18 |
| + | MusID_Boss = $19 |
| + | MusID_TDZ = $1A |
| + | MusID_GSBonus = $1B |
| + | MusID_SpecStage = $1C |
| + | MusID_SMBonus = $1D |
| + | MusID_GBMBonus = $1E |
| + | MusID_KTE = $1F |
| + | MusID_ALZ = $20 |
| + | MusID_BPZ = $21 |
| + | MusID_DPZ = $22 |
| + | MusID_CGZ = $23 |
| + | MusID_EMZ = $24 |
| + | MusID_Title = $25 |
| + | MusID_Credits = $26 |
| + | MusID_GameOver = $27 |
| + | MusID_Continue = $28 |
| + | MusID_EndLevel = $29 |
| + | MusID_ExtraLife = $2A |
| + | MusID_Emerald = $2B |
| + | MusID_Invincible = $2C |
| + | MusID_2PVS = $2D |
| + | MusID_MB = $2E |
| + | MusID_Options = $2F |
| + | MusID_EndBoss = $30 |
| + | MusID_Countdown = $31 |
| + | MusID_Ending = $32 |
| | | |
− | ;Mus_Emerald: BINCLUDE "sound/music/Got an emerald.bin" | + | ; for compatibility with Sonic 2 |
− | Mus_Emerald: dc.w z80_ptr(MusEmrldVoices),$0703,$01D5
| + | MusID_2PResult = MusID_Continue |
− | dc.w z80_ptr(MusEmeraldDAC),$0000
| + | MusID_EHZ = MusID_AIZ1 |
− | dc.w z80_ptr(MusEmeraldFM1),$F408
| + | MusID_MCZ_2P = MusID_MHZ2 |
− | dc.w z80_ptr(MusEmeraldFM2),$F408
| + | MusID_OOZ = MusID_DPZ |
− | dc.w z80_ptr(MusEmeraldFM3),$F407
| + | MusID_MTZ = MusID_DEZ1 |
− | dc.w z80_ptr(MusEmeraldFM4),$F416
| + | MusID_HTZ = MusID_LRZ1 |
− | dc.w z80_ptr(MusEmeraldFM5),$F416
| + | MusID_ARZ = MusID_HCZ1 |
− | dc.w z80_ptr(MusEmeraldFM6),$F416
| + | MusID_CNZ_2P = MusID_CNZ2 |
− | dc.w z80_ptr(MusEmeraldPSG1),$F402,$0004
| + | MusID_CNZ = MusID_CNZ1 |
− | dc.w z80_ptr(MusEmeraldPSG2),$F402,$0005
| + | MusID_DEZ = MusID_DEZ2 |
− | dc.w z80_ptr(MusEmeraldPSG3),$F400,$0004
| + | MusID_MCZ = MusID_EMZ |
− | MusEmeraldFM3: dc.b $E1,$02
| + | MusID_EHZ_2P = MusID_AIZ2 |
− | MusEmeraldFM1: dc.b $EF,$00,$C1,$06,$C4,$C9,$CD,$0C,$C9,$D0,$2A,$F2
| + | MusID_SCZ = MusID_FBZ1 |
− | MusEmeraldFM2: dc.b $EF,$00,$BD,$06,$C1,$C4,$C9,$0C,$C6,$CB,$2A,$F2
| + | MusID_CPZ = MusID_HCZ2 |
− | MusEmeraldFM4: dc.b $EF,$01,$C1,$0C,$C1,$06,$C4,$06,$80,$C4,$80,$C9
| + | MusID_WFZ = MusID_FBZ2 |
− | dc.b $2A,$F2
| + | MusID_HPZ = MusID_LRZ1 |
− | MusEmeraldFM5: dc.b $EF,$01,$C9,$0C,$C9,$06,$CD,$06,$80,$CD,$80,$D0
| + | MusID_SuperSonic = MusID_Invincible |
− | dc.b $2A,$F2
| + | MusID__End = $33 |
− | MusEmeraldFM6: dc.b $EF,$01,$C4,$0C,$C4,$06,$C9,$06,$80,$C9,$80,$CD
| + | </pre> |
− | dc.b $2A,$F2
| + | The original music IDs in the compatibility section can be set to whichever ones you want in the above (I wouldn't recommend editing the 2PResult one though) |
− | MusEmeraldPSG2: dc.b $80,$2D
| |
− | - dc.b $C4,$06,$C2,$C1,$BF,$EC,$03
| |
− | dc.b $F7,$00,$04
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $F2
| |
− | MusEmeraldPSG1: dc.b $E2,$01,$80,$02,$80,$2D
| |
− | - dc.b $C4,$06,$C2,$C1,$BF,$EC,$03
| |
− | dc.b $F7,$00,$04
| |
− | dc.w z80_ptr(-)
| |
− | MusEmeraldPSG3:
| |
− | MusEmeraldDAC: dc.b $E2,$01,$F2
| |
− | MusEmrldVoices: dc.b $04,$35,$54,$72,$46,$1F,$1F,$1F,$1F,$07,$07,$0A
| |
− | dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$23,$1D,$14,$80
| |
− | dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00
| |
− | dc.b $00,$04,$04,$00,$00,$10,$10,$07,$07,$1A,$16,$80,$80
| |
| | | |
− | ;Mus_Credits: BINCLUDE "sound/music/Credits.bin"
| + | ===Sound Effects=== |
− | Mus_Credits: dc.w z80_ptr(MusCred_Voices),$0603,$01F0
| + | Okay, now we actually have the music working (well, sorta working, fades and music stops aren't working yet though and we will fix that very soon), so it is time to get those sound effects working as they should. |
− | dc.w z80_ptr(MusCred_DAC),$0000
| + | We want to start with '''SndID__First'''. you may notice that this area looks like this: |
− | dc.w z80_ptr(MusCred_FM1),$000E
| + | <pre> |
− | dc.w z80_ptr(MusCred_FM2),$180A
| + | ; Sound IDs |
− | dc.w z80_ptr(MusCred_FM3),$0014
| + | offset := SoundIndex |
− | dc.w z80_ptr(MusCred_FM4),$0016
| + | ptrsize := 2 |
− | dc.w z80_ptr(MusCred_FM5),$0C16
| + | idstart := $A0 |
− | dc.w z80_ptr(MusCred_PSG1),$E806,$000B
| + | ; $80 is reserved for silence, so if you make idstart $80 or less, |
− | dc.w z80_ptr(MusCred_PSG2),$DC07,$000B
| + | ; you may need to insert a dummy SndPtr in the $80 slot |
− | dc.w z80_ptr(MusCred_PSG3),$0002,$0003
| |
− | MusCred_FM1: dc.b $E9,$F4,$E6,$FE,$F8
| |
− | dc.w z80_ptr(MusCreditsDB06)
| |
− | dc.b $E9,$0C,$E6,$02
| |
− | - dc.b $80,$30
| |
− | dc.b $F7,$00,$08
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $EF,$03,$F8
| |
− | dc.w z80_ptr(MusCreditsD9D1)
| |
− | dc.b $AE,$06,$A2,$F8
| |
− | dc.w z80_ptr(MusCreditsD9D1)
| |
− | dc.b $E6,$FD
| |
− | - dc.b $EF,$00,$B7,$06,$BA,$F8
| |
− | dc.w z80_ptr(MusCreditsDA13)
| |
− | dc.b $F7,$00,$02
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $80,$06,$80,$80,$30,$80,$EF,$0B,$E9,$18,$E6,$02
| |
− | - dc.b $94,$0C,$8F,$92,$8F,$06,$94,$05,$94,$07,$06,$8F
| |
− | dc.b $0C,$92,$8F
| |
− | dc.b $F7,$00,$05
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $80,$30,$80,$EF,$0E,$E6,$FF,$E9,$E8,$F8
| |
− | dc.w z80_ptr(MusCreditsDAE5)
| |
− | dc.b $80,$12,$91,$94,$06,$80,$18,$96,$12,$9A,$06,$80
| |
− | dc.b $80,$12,$8F,$93,$08,$80,$16,$96,$06,$91,$92,$94
| |
− | dc.b $96,$F8
| |
− | dc.w z80_ptr(MusCreditsDAE5)
| |
− | dc.b $80,$12,$9D,$9A,$08,$80,$16,$96,$12,$9D,$08,$80
| |
− | dc.b $04,$EF,$12
| |
− | dc.b $F0,$18,$01,$0A,$04
| |
− | dc.b $80,$30,$80,$F8
| |
− | dc.w z80_ptr(MusCreditsDA5F)
| |
− | dc.b $E7,$24,$E7,$C5,$01,$E7,$C4,$E7,$C3,$E7,$C2,$E7
| |
− | dc.b $C1,$E7,$C0,$E7,$BF,$E7,$BE,$E7,$BD,$E7,$BC,$E7
| |
− | dc.b $BB,$E7,$BA,$80,$60,$EF,$01,$E9,$F4,$E6,$FA,$F4
| |
− | dc.b $F8
| |
− | dc.w z80_ptr(MusCreditsDA99)
| |
− | dc.b $B1,$03,$F8
| |
− | dc.w z80_ptr(MusCreditsDA99)
| |
− | dc.b $80,$03,$80,$60,$E6,$04,$E1,$01,$EF,$1B,$E6,$06
| |
− | dc.b $C1,$0C,$E8,$06,$BD,$06,$BA,$BD,$0C,$80,$80,$EF
| |
− | dc.b $1C,$E6,$FA,$E8,$00,$BC,$0C,$12,$06,$EF,$1B,$E6
| |
− | dc.b $06,$E8,$06,$C2,$06,$C2,$80,$C2,$80,$C2,$E8,$00
| |
− | dc.b $C3,$0C,$C4,$80,$E8,$06,$C4,$06,$06,$C6,$C4,$E8
| |
− | dc.b $00,$C1,$0C,$E8,$06,$BD,$06,$BA,$BD,$0C,$80,$80
| |
− | dc.b $E8,$00,$EF,$1C,$E6,$FA,$C1,$C4,$C1,$EF,$1A,$E6
| |
− | dc.b $06,$E8,$06,$C2,$06,$C2,$80,$C2,$80,$C2,$E8,$00
| |
− | dc.b $C3,$0C,$C4,$06,$80,$80,$24,$80,$30,$80,$EF,$1F
| |
− | dc.b $E9,$18,$E6,$F7,$E1,$00,$80,$06,$AC,$AE,$80,$B1
| |
− | dc.b $80,$B3,$80,$B4,$80,$B3,$80,$B1,$B3,$80,$B1,$E9
| |
− | dc.b $F4,$EF,$00,$80,$0C,$AC,$06,$AE,$B1,$80,$12,$AC
| |
− | dc.b $06,$AE,$B1,$80,$B4,$B1,$80,$B1,$E9,$0C,$EF,$1F
| |
− | dc.b $80,$06,$B8,$12,$B4,$06,$80,$B3,$80,$B4,$80,$B3
| |
− | dc.b $80,$B1,$AE,$80,$B1,$E9,$F4,$EF,$00,$80,$06,$AF
| |
− | dc.b $12,$AE,$06,$80,$12,$AF,$06,$80,$AE,$80,$AF,$B1
| |
− | dc.b $80,$B1,$80,$30,$80,$EF,$21,$E9,$0C,$80,$30,$80
| |
− | dc.b $08,$A0,$04,$9E,$0C,$9D,$9B,$99,$08,$04,$91,$0C
| |
− | dc.b $92,$93,$94,$98,$99,$9B,$9D,$98,$95,$93,$91,$98
| |
− | dc.b $9D,$91,$96,$98,$99,$98,$96,$99,$9D,$96,$95,$97
| |
− | dc.b $99,$97,$95,$96,$97,$98,$99,$98,$99,$9B,$9D,$08
| |
− | dc.b $04,$98,$0C,$91,$95,$96,$98,$99,$9D,$9E,$08,$96
| |
− | dc.b $10,$97,$0C,$98,$F8
| |
− | dc.w z80_ptr(MusCreditsDAFE)
| |
− | dc.b $9E,$E6,$04,$F8
| |
− | dc.w z80_ptr(MusCreditsDAFE)
| |
− | dc.b $9E,$E6,$FC,$F8
| |
− | dc.w z80_ptr(MusCreditsDAFE)
| |
− | dc.b $9E,$08,$99,$04,$EF,$23,$E9,$E8,$E6,$07,$80,$60
| |
− | dc.b $F8
| |
− | dc.w z80_ptr(MusCreditsDABE)
| |
− | dc.b $80,$60,$E6,$FB,$80,$0C,$CD,$06,$80,$D4,$CD,$06
| |
− | dc.b $80,$0C,$CD,$06,$80,$D4,$CD,$06,$80,$18,$E6,$05
| |
− | dc.b $80,$0C,$AE,$80,$AE,$80,$24,$E1,$02,$E6,$08,$A2
| |
− | dc.b $6C,$F2
| |
− | MusCreditsD9D1: dc.b $A5,$0C,$B1,$06,$80,$B1,$0C,$AC,$B3,$12,$B1,$0C
| |
− | dc.b $AC,$06,$AE,$B1,$A7,$0C,$B3,$06,$80,$B3,$0C,$AE
| |
− | dc.b $B5,$12,$B3,$06,$80,$AE,$B0,$B3,$A3,$0C,$AF,$06
| |
− | dc.b $80,$AF,$0C,$AA,$B1,$12,$AF,$0C,$AA,$06,$AC,$AF
| |
− | dc.b $A2,$0C,$AE,$06,$A2,$A4,$0C,$B0,$06,$A4,$A5,$0C
| |
− | dc.b $B1,$06,$A5,$A2,$0C,$E3
| |
− | MusCreditsDA13: dc.b $BE,$0C,$BC,$06,$BA,$BC,$BA,$04,$E7,$08,$BA,$04
| |
− | dc.b $80,$0E,$EF,$07,$B7,$06,$B2,$B5,$B7,$EF,$00,$B7
| |
− | dc.b $BA,$BE,$0C,$BC,$06,$BA,$BC,$BA,$0C,$BC,$04,$80
| |
− | dc.b $08,$BA,$04,$80,$08,$BC,$04,$80,$08,$BE,$12,$BA
| |
− | dc.b $06,$B7,$80,$B7,$80,$24,$EF,$07,$B7,$06,$B2,$B5
| |
− | dc.b $B7,$80,$0C,$80,$30,$BE,$06,$BE,$BA,$04,$80,$08
| |
− | dc.b $BC,$06,$BE,$E3
| |
− | MusCreditsDA5F: dc.b $C3,$01,$E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$02,$C3
| |
− | dc.b $01,$E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$01,$C3,$01
| |
− | dc.b $E7,$C4,$E7,$C5,$E7,$C6,$2D,$E9,$FC,$C3,$01,$E7
| |
− | dc.b $C4,$E7,$C5,$E7,$C6,$2D,$E9,$01,$C3,$01,$E7,$C4
| |
− | dc.b $E7,$C5,$E7,$C6,$2D,$E7,$30,$E7,$30,$E3
| |
− | MusCreditsDA99: dc.b $A7,$0C,$B3,$06,$80,$B1,$80,$B3,$0C,$A7,$03,$80
| |
− | dc.b $06,$A7,$03,$B3,$0C,$B1,$B3,$09,$AE,$03,$AC,$06
| |
− | dc.b $80,$AC,$0C,$AE,$06,$80,$AE,$0C,$AF,$06,$80,$27
| |
− | dc.b $E3
| |
− | MusCreditsDABE: dc.b $80,$0C,$CA,$15,$80,$03,$CA,$06,$80,$CB,$0F,$80
| |
− | dc.b $03,$C8,$18,$80,$06,$CA,$80,$CA,$80,$CA,$80,$C6
| |
− | dc.b $80,$C4,$0F,$80,$03,$C8,$18,$80,$06
| |
− | dc.b $F7,$00,$02
| |
− | dc.w z80_ptr(MusCreditsDABE)
| |
− | dc.b $E3
| |
− | MusCreditsDAE5: dc.b $80,$12,$94,$97,$06,$80,$18,$99,$12,$94,$06,$80
| |
− | dc.b $80,$12,$92,$96,$06,$80,$18,$97,$12,$92,$06,$80
| |
− | dc.b $E3
| |
− | MusCreditsDAFE: dc.b $80,$99,$80,$99,$80,$9E,$80,$E3
| |
− | MusCreditsDB06: dc.b $EF,$07,$80,$54,$C7,$04,$C8,$C9,$CA,$24,$CD,$D2
| |
− | dc.b $18,$D0,$24,$CF,$CB,$18,$CB,$0C,$CA,$80,$CD,$60
| |
− | dc.b $E7,$3C,$CA,$24,$CD,$D2,$18,$D4,$24,$D0,$D4,$18
| |
− | dc.b $D4,$24,$D6,$60,$E7,$3C,$E3
| |
− | MusCred_FM2: dc.b $80,$60,$EF,$01,$E8,$06,$F8
| |
− | dc.w z80_ptr(MusCreditsDE2A)
| |
− | dc.b $F8
| |
− | dc.w z80_ptr(MusCreditsDE2A)
| |
− | - dc.b $85,$0C
| |
− | dc.b $F7,$00,$0C
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $8A,$87,$88,$89,$F8
| |
− | dc.w z80_ptr(MusCreditsDE2A)
| |
− | - dc.b $88
| |
− | dc.b $F7,$00,$0B
| |
− | dc.w z80_ptr(-)
| |
− | - dc.b $8A
| |
− | dc.b $F7,$00,$0A
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $E8,$00,$E6,$FC,$8A,$8B,$8C,$E6,$04,$E8,$09
| |
− | - dc.b $8D,$0C
| |
− | dc.b $F7,$00,$0C
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $E8,$00,$8D,$8A,$8B,$8C,$E8,$09
| |
− | - dc.b $8D,$0C
| |
− | dc.b $F7,$00,$0C
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $8D,$06,$99,$E8,$00,$8A,$0C,$8B,$8C,$E9,$E8,$E6
| |
− | dc.b $0C,$EF,$04
| |
− | - dc.b $F8
| |
− | dc.w z80_ptr(MusCreditsDD59)
| |
− | dc.b $F7,$00,$02
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $E6,$F9,$EF,$08
| |
− | MusCreditsDB93: dc.b $F8
| |
− | dc.w z80_ptr(MusCreditsDD8D)
| |
− | - dc.b $9F,$04,$80,$08,$9F,$0C
| |
− | dc.b $F7,$00,$02
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $06,$9C,$12,$9D,$0C,$9E,$F8
| |
− | dc.w z80_ptr(MusCreditsDD8D)
| |
− | - dc.b $9D,$04,$80,$08,$9D,$0C
| |
− | dc.b $F7,$00,$02
| |
− | dc.w z80_ptr(-)
| |
− | - dc.b $9C,$04,$80,$08,$9C,$0C
| |
− | dc.b $F7,$00,$02
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $F7,$01,$02
| |
− | dc.w z80_ptr(MusCreditsDB93)
| |
− | dc.b $80,$60,$80,$48,$EF,$0C,$E6,$13,$F8
| |
− | dc.w z80_ptr(MusCreditsDD9D)
| |
− | dc.b $24,$80,$60,$EF,$0F,$E6,$F3
| |
− | dc.b $F0,$04,$02,$03,$02
| |
− | dc.b $F8
| |
− | dc.w z80_ptr(MusCreditsDDB5)
| |
− | dc.b $C4,$18,$C3,$30,$E7,$18,$80,$0C,$F8
| |
− | dc.w z80_ptr(MusCreditsDDB5)
| |
− | dc.b $BE,$EF,$13,$E6,$F5,$F4,$80,$60
| |
− | - dc.b $F8
| |
− | dc.w z80_ptr(MusCreditsDDEA)
| |
− | dc.b $A8,$0C,$A9,$08,$A1,$10,$F8
| |
− | dc.w z80_ptr(MusCreditsDDEA)
| |
− | dc.b $A8,$08,$A9,$04,$80,$18
| |
− | dc.b $F7,$00,$02
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $80,$60,$EF,$17,$E1,$02,$E9,$F4,$E6,$0A,$F8
| |
− | dc.w z80_ptr(MusCreditsDDD5)
| |
− | dc.b $CE,$15,$CD,$03,$CB,$06,$80,$C9,$0C,$CD,$06,$80
| |
− | dc.b $C9,$0C,$CB,$06,$80,$12,$80,$60,$EF,$1B,$E1,$00
| |
− | dc.b $E8,$06,$80,$3C,$B8,$06,$06,$BA,$BD,$BD,$BA,$EF
| |
− | dc.b $1D,$E6,$FA,$E8,$00,$F8
| |
− | dc.w z80_ptr(MusCreditsDDF9)
| |
− | dc.b $80,$F8
| |
− | dc.w z80_ptr(MusCreditsDE09)
| |
− | dc.b $F8
| |
− | dc.w z80_ptr(MusCreditsDDF9)
| |
− | dc.b $EF,$1C,$BD,$EF,$1D,$F8
| |
− | dc.w z80_ptr(MusCreditsDE09)
| |
− | dc.b $80,$30,$80,$EF,$01,$E9,$18,$E6,$F9
| |
− | - dc.b $99,$0C,$A5,$06,$80,$96,$0C,$A2,$06,$80,$97,$0C
| |
− | dc.b $A3,$06,$80,$98,$0C,$A8,$06,$A7,$99,$06,$99,$12
| |
− | dc.b $96,$0C,$A2,$06,$80,$97,$0C,$A3,$06,$80,$98,$0C
| |
− | dc.b $A4,$06,$80
| |
− | dc.b $F7,$00,$02
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $80,$60,$EF,$22,$E9,$E8,$E6,$03
| |
− | dc.b $F0,$1C,$01,$06,$04
| |
− | dc.b $80,$50,$AC,$04,$AE,$08,$B1,$04,$B5,$30,$80,$0C
| |
− | dc.b $B5,$08,$80,$04,$B6,$08,$B5,$10,$B9,$08,$04,$80
| |
− | dc.b $08,$B5,$34,$80,$0C,$B5,$BA,$08,$04,$80,$08,$B5
| |
− | dc.b $04,$B1,$24,$80,$0C,$B1,$08,$80,$04,$B3,$08,$B1
| |
− | dc.b $04,$B4,$0C,$B3,$08,$B1,$4C,$80,$0C,$B5,$08,$80
| |
− | dc.b $04,$B6,$08,$80,$04,$B5,$08,$80,$04,$B9,$08,$04
| |
− | dc.b $80,$08,$B5,$1C,$80,$0C,$BA,$18,$BC,$08,$BA,$04
| |
− | dc.b $BD,$18,$80,$0C,$BA,$04,$80,$08,$B8,$18,$B5,$B1
| |
− | dc.b $B3,$0C,$E6,$04,$F8
| |
− | dc.w z80_ptr(MusCreditsDE17)
| |
− | dc.b $B3,$0C,$E6,$FC,$F8
| |
− | dc.w z80_ptr(MusCreditsDE17)
| |
− | dc.b $B3,$14,$B1,$04,$E6,$FF,$EF,$24,$F4,$80,$60
| |
− | - dc.b $F8
| |
− | dc.w z80_ptr(MusCreditsDE20)
| |
− | dc.b $AC,$12,$AB,$0C,$AC,$06,$AB,$0C,$F8
| |
− | dc.w z80_ptr(MusCreditsDE20)
| |
− | dc.b $B3,$12,$B2,$0C,$B3,$06,$B2,$0C
| |
− | dc.b $F7,$00,$02
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $AC,$06,$80,$A9,$80,$AA,$80,$AB,$80,$AC,$AC,$A9
| |
− | dc.b $80,$AA,$80,$AC,$80,$A9,$80,$A9,$80,$AD,$80,$AD
| |
− | dc.b $80,$B0,$80,$B0,$80,$B3,$80,$B3,$80,$80,$0C,$A2
| |
− | dc.b $12,$80,$06,$A2,$12,$AD,$AE,$06,$80,$E6,$FD,$A2
| |
− | dc.b $6C,$F2
| |
− | MusCreditsDD59: dc.b $80,$0C,$C4,$06,$80,$C6,$80,$C4,$80,$C9,$80,$C9
| |
− | dc.b $80,$CB,$CD,$80,$0C,$80,$CB,$18,$C6,$06,$80,$C9
| |
− | dc.b $C9,$80,$CB,$0C,$80,$12,$80,$1E,$C7,$06,$C9,$C7
| |
− | dc.b $CB,$80,$C9,$80,$C7,$C9,$80,$C6,$E7,$C6,$30,$E7
| |
− | dc.b $18,$80,$18,$E3
| |
− | MusCreditsDD8D: dc.b $9F,$04,$80,$08,$9F,$0C
| |
− | dc.b $F7,$00,$03
| |
− | dc.w z80_ptr(MusCreditsDD8D)
| |
− | dc.b $06,$AB,$9F,$0C,$E3
| |
− | MusCreditsDD9D: dc.b $B8,$08,$BA,$BC,$B6,$30,$E7,$30,$E7,$B6,$80,$18
| |
− | dc.b $B8,$08,$BA,$BC,$B6,$30,$E7,$30,$E7,$30,$E7,$E3
| |
− | MusCreditsDDB5: dc.b $BF,$06,$BD,$BF,$12,$C2,$BF,$0C,$C1,$80,$06,$12
| |
− | dc.b $C4,$0C,$C2,$06,$80,$C9,$C6,$3C,$80,$06,$0C,$C7
| |
− | dc.b $12,$C6,$C4,$06,$C2,$C1,$18,$E3
| |
− | MusCreditsDDD5: dc.b $CE,$15,$CD,$03,$CB,$06,$80,$C9,$0C,$CD,$06,$80
| |
− | dc.b $C9,$0C,$CB,$06,$80,$12,$80,$60,$E3
| |
− | MusCreditsDDEA: dc.b $A2,$0C,$AE,$AC,$08,$AE,$04,$AC,$08,$A9,$04,$A7
| |
− | dc.b $08,$04,$E3
| |
− | MusCreditsDDF9: dc.b $80,$0C,$B1,$AE,$06,$06,$AC,$0C,$80,$B0,$AE,$06
| |
− | dc.b $06,$AC,$0C,$E3
| |
− | MusCreditsDE09: dc.b $AE,$AC,$06,$06,$AA,$0C,$80,$AC,$0C,$06,$06,$AE
| |
− | dc.b $AC,$E3
| |
− | MusCreditsDE17: dc.b $BA,$04,$80,$08,$B8,$18,$B5,$B1,$E3
| |
− | MusCreditsDE20: dc.b $AE,$06,$80,$AE,$80,$A9,$80,$A9,$80,$E3
| |
− | MusCreditsDE2A: dc.b $8A,$0C
| |
− | dc.b $F7,$00,$08
| |
− | dc.w z80_ptr(MusCreditsDE2A)
| |
− | dc.b $E3
| |
− | MusCred_FM3: dc.b $80,$60,$F8
| |
− | dc.w z80_ptr(MusCreditsE065)
| |
− | dc.b $E9,$18,$EF,$02,$F8
| |
− | dc.w z80_ptr(MusCreditsE040)
| |
− | dc.b $B8,$3C,$F8
| |
− | dc.w z80_ptr(MusCreditsE040)
| |
− | dc.b $BD,$3C,$E9,$E8,$E6,$02,$E1,$03,$EF,$04,$E0,$80
| |
− | - dc.b $F8
| |
− | dc.w z80_ptr(MusCreditsDD59)
| |
− | dc.b $F7,$00,$02
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $EF,$09,$E9,$0C,$E6,$FD,$E0,$40
| |
− | dc.b $F0,$06,$01,$05,$04
| |
− | dc.b $E1,$00
| |
− | - dc.b $9F,$0C,$AB,$06,$80,$A9,$80,$AB,$9F,$80,$9F,$AB
| |
− | dc.b $80,$A9,$80,$AB,$0C
| |
− | dc.b $F7,$00,$03
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $9D,$0C,$A9,$06,$80,$A8,$80,$A9,$9C,$80,$9C,$A8
| |
− | dc.b $80,$A6,$80,$A8,$0C
| |
− | dc.b $F7,$01,$02
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $80,$60,$EF,$0D,$E6,$FB,$E0,$C0,$F4,$80,$60
| |
− | - dc.b $F8
| |
− | dc.w z80_ptr(MusCreditsDFF2)
| |
− | dc.b $F7,$00,$02
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $80,$60,$EF,$0F,$E0,$80,$E6,$0B,$F8
| |
− | dc.w z80_ptr(MusCreditsDDB5)
| |
− | dc.b $C4,$18,$C3,$48,$80,$0C,$F8
| |
− | dc.w z80_ptr(MusCreditsDDB5)
| |
− | dc.b $BE,$0C
| |
− | dc.b $F0,$18,$01,$03,$04
| |
− | dc.b $E6,$F3,$E0,$C0,$EF,$14,$A2,$14,$A4,$04,$A5,$04
| |
− | dc.b $80,$08,$A9,$04,$80,$08,$A8,$04,$80,$08,$A9,$04
| |
− | dc.b $80,$08,$AC,$08,$A9,$10
| |
− | - dc.b $80,$30
| |
− | dc.b $F7,$00,$0A
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $EF,$18,$E9,$F4,$E6,$08,$F4,$E0,$40,$80,$60,$80
| |
− | dc.b $30,$C6,$06,$80,$C2,$0C,$C4,$09,$C2,$03,$BF,$0C
| |
− | dc.b $80,$60,$80,$3C,$80,$60,$EF,$1B,$E6,$FB,$E0,$C0
| |
− | dc.b $E8,$06,$C4,$06,$06,$C6,$C9,$C9,$C6,$E8,$00,$CD
| |
− | dc.b $0C,$E8,$06,$C9,$06,$C6,$C9,$0C,$80,$80,$12,$EF
| |
− | dc.b $1C,$E8,$00,$BD,$BA,$0C,$E8,$06,$EF,$1B,$CE,$06
| |
− | dc.b $CE,$80,$CE,$80,$CE,$E8,$00,$CF,$0C,$D0,$80,$E8
| |
− | dc.b $06,$D0,$06,$06,$D2,$D0,$E8,$00,$CD,$0C,$E8,$06
| |
− | dc.b $C9,$06,$C6,$C9,$0C,$E8,$00,$EF,$1C,$80,$1E,$C2
| |
− | dc.b $0C,$C2,$BD,$06,$80,$60,$80,$60,$EF,$00,$E9,$18
| |
− | dc.b $80,$60,$80,$0C,$AC,$06,$AE,$B1,$80,$12,$AC,$06
| |
− | dc.b $AE,$B1,$80,$B4,$B1,$80,$B1,$80,$60,$80,$06,$AF
| |
− | dc.b $12,$AE,$06,$80,$12,$AF,$06,$80,$AE,$80,$AF,$B1
| |
− | dc.b $80,$B1,$80,$60,$EF,$22,$E9,$DC,$E6,$FF,$E0,$80
| |
− | dc.b $80,$60,$F8
| |
− | dc.w z80_ptr(MusCreditsE004)
| |
− | dc.b $CD,$30,$CB,$18,$CD,$0C,$CB,$C9,$30,$CE,$F8
| |
− | dc.w z80_ptr(MusCreditsE051)
| |
− | dc.b $E6,$04,$F8
| |
− | dc.w z80_ptr(MusCreditsE051)
| |
− | dc.b $E6,$FC,$80,$C4,$80,$C4,$80,$C6,$18,$08,$C4,$04
| |
− | dc.b $E9,$0C,$E6,$FF,$E0,$C0,$EF,$00,$80,$60
| |
− | - dc.b $F8
| |
− | dc.w z80_ptr(MusCreditsE05B)
| |
− | dc.b $CB,$12,$CB,$1E,$F8
| |
− | dc.w z80_ptr(MusCreditsE05B)
| |
− | dc.b $D0,$12,$D0,$1E
| |
− | dc.b $F7,$00,$02
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $80,$0C,$CB,$12,$80,$06,$CB,$80,$CA,$12,$CB,$CA
| |
− | dc.b $0C,$C5,$18,$C8,$CB,$D1,$80,$0C,$CD,$80,$CD,$12
| |
− | dc.b $CC,$CD,$06,$80,$E6,$F8,$EF,$01,$E1,$03,$A2,$6C
| |
− | dc.b $F2
| |
− | MusCreditsDFF2: dc.b $80,$60,$BC,$06,$BD,$BC,$B8,$BA,$B6,$0C,$B8,$B3
| |
− | dc.b $B3,$06,$B6,$0C,$B8,$E3
| |
− | MusCreditsE004: dc.b $80,$0C,$CD,$04,$80,$10,$CD,$04,$80,$0C,$CD,$0C
| |
− | dc.b $CE,$08,$CD,$04,$80,$18,$80,$0C,$CB,$04,$80,$10
| |
− | dc.b $CB,$04,$80,$0C,$CB,$0C,$CD,$08,$CB,$04,$80,$18
| |
− | - dc.b $80,$0C,$C9,$04,$80,$10,$C9,$04,$80,$0C,$C9,$0C
| |
− | dc.b $CB,$08,$C9,$04,$80,$18
| |
− | dc.b $F7,$00,$02
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $E3
| |
− | MusCreditsE040: dc.b $80,$18,$B8,$0B,$80,$0D,$BA,$0C,$0B,$80,$19,$BD
| |
− | dc.b $0C,$0B,$80,$0D,$E3
| |
− | MusCreditsE051: dc.b $80,$0C,$C4,$80,$C4,$80,$C6,$80,$C6,$E3
| |
− | MusCreditsE05B: dc.b $CD,$06,$80,$CD,$80,$CA,$80,$CA,$80,$E3
| |
− | MusCreditsE065: dc.b $EF,$05,$E9,$F4,$C6,$60,$CB,$CD,$E7,$CD,$C6,$60
| |
− | dc.b $D0,$D0,$24,$D2,$60,$E7,$3C,$E3
| |
− | MusCred_FM4: dc.b $80,$60,$E9,$FB,$E6,$FE,$F8
| |
− | dc.w z80_ptr(MusCreditsE065)
| |
− | dc.b $E9,$1D,$E6,$02,$EF,$02,$F8
| |
− | dc.w z80_ptr(MusCreditsE2AE)
| |
− | dc.b $B5,$3C,$F8
| |
− | dc.w z80_ptr(MusCreditsE2AE)
| |
− | dc.b $B8,$3C,$E6,$06,$EF,$05
| |
− | dc.b $F0,$02,$01,$FE,$04
| |
− | - dc.b $C1,$30,$E7,$30,$C3,$E7,$30,$BF,$E7,$30,$BD,$E7
| |
− | dc.b $30
| |
− | dc.b $F7,$00,$02
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $EF,$0A,$E9,$F4,$E6,$F7
| |
− | dc.b $F0,$0C,$01,$FB,$04
| |
− | - dc.b $F8
| |
− | dc.w z80_ptr(MusCreditsE2BF)
| |
− | dc.b $80,$25,$C3,$06,$C3,$80,$0C,$C3,$06,$C3,$05,$80
| |
− | dc.b $0D,$C3,$06,$C5,$30,$E7,$06,$F8
| |
− | dc.w z80_ptr(MusCreditsE2BF)
| |
− | dc.b $80,$31,$80,$60
| |
− | dc.b $F7,$00,$02
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $80,$60,$80,$48,$EF,$0C,$E6,$05,$F4,$E1,$02,$E0
| |
− | dc.b $80,$F8
| |
− | dc.w z80_ptr(MusCreditsDD9D)
| |
− | dc.b $24,$80,$0C,$80,$60,$EF,$10,$E6,$F7,$E1,$00,$E0
| |
− | dc.b $40,$F8
| |
− | dc.w z80_ptr(MusCreditsE2D2)
| |
− | dc.b $B3,$B7,$06,$AE,$0C,$B1,$B3,$B7,$06,$80,$B7,$AE
| |
− | dc.b $0C,$B1,$F8
| |
− | dc.w z80_ptr(MusCreditsE2D2)
| |
− | dc.b $EF,$15,$E6,$01,$F8
| |
− | dc.w z80_ptr(MusCreditsE22D)
| |
− | - dc.b $EF,$14,$80,$4E,$E0,$40,$A1,$12,$A2,$06,$E0,$C0
| |
− | dc.b $EF,$16,$80,$30,$80,$06,$BA,$08,$B9,$04,$B8,$08
| |
− | dc.b $B7,$04,$B6,$08,$B5,$04
| |
− | dc.b $F7,$00,$02
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $80,$60,$EF,$17,$E9,$F4,$E6,$02,$E0,$C0
| |
− | dc.b $F0,$01,$01,$03,$03
| |
− | - dc.b $F8
| |
− | dc.w z80_ptr(MusCreditsDDD5)
| |
− | dc.b $F7,$00,$02
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $80,$60,$EF,$1E,$E0,$40,$E6,$FE,$E9,$F4,$F4,$E8
| |
− | dc.b $06,$80,$0C,$C1,$06,$12,$18,$C4,$06,$12,$0C,$EF
| |
− | dc.b $1C,$E0,$C0,$E6,$FA,$E8,$00,$C6,$E8,$06,$E6,$06
| |
− | dc.b $EF,$1E,$E0,$40,$C2,$06,$12,$18,$C4,$06,$12,$18
| |
− | dc.b $C1,$06,$12,$18,$C4,$06,$12,$0C,$EF,$1A,$E0,$C0
| |
− | dc.b $E9,$0C,$C6,$06,$C6,$80,$C6,$80,$C6,$E8,$00,$C7
| |
− | dc.b $0C,$C8,$06,$EF,$1E,$E0,$40,$E9,$F4,$E8,$06,$80
| |
− | dc.b $C4,$06,$12,$0C,$80,$60,$EF,$20,$E9,$18,$E6,$FA
| |
− | dc.b $E0,$C0,$E8,$00,$B4,$03,$E7,$B6,$5D,$B3,$03,$E7
| |
− | dc.b $B5,$5D,$B1,$03,$E7,$B3,$5D,$B3,$03,$E7,$B5,$5D
| |
− | dc.b $80,$60,$EF,$22,$E0,$40,$E9,$E8,$E6,$04,$80,$30
| |
− | dc.b $80,$F8
| |
− | dc.w z80_ptr(MusCreditsE246)
| |
− | dc.b $C9,$30,$C8,$18,$C9,$0C,$C8,$C6,$30,$C9,$80,$0C
| |
− | dc.b $C1,$80,$C1,$80,$C2,$80,$C2,$E6,$04,$80,$C1,$80
| |
− | dc.b $C1,$80,$C2,$80,$C2,$E6,$FC,$80,$C1,$80,$C1,$80
| |
− | dc.b $C2,$18,$08,$C1,$04,$E9,$0C,$E6,$FF,$E0,$C0,$EF
| |
− | dc.b $00,$80,$60
| |
− | - dc.b $F8
| |
− | dc.w z80_ptr(MusCreditsE2C8)
| |
− | dc.b $C8,$12,$C8,$1E,$F8
| |
− | dc.w z80_ptr(MusCreditsE2C8)
| |
− | dc.b $CB,$12,$CB,$1E
| |
− | dc.b $F7,$00,$02
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $E1,$03,$E6,$08,$F8
| |
− | dc.w z80_ptr(MusCreditsE28F)
| |
− | dc.b $E6,$F0,$EF,$01
| |
− | dc.b $F0,$00,$01,$06,$04
| |
− | dc.b $A2,$6C,$F2
| |
− | MusCreditsE22D: dc.b $A2,$14,$A4,$04,$A5,$04,$80,$08,$A9,$04,$80,$08
| |
− | dc.b $A8,$04,$80,$08,$A9,$04,$80,$08,$AC,$08,$A9,$10
| |
− | dc.b $E3
| |
− | MusCreditsE246: dc.b $80,$0C
| |
− | dc.b $C9,$04,$80,$10
| |
− | dc.b $C9,$04,$80,$0C
| |
− | dc.b $C9,$0C
| |
− | dc.b $CB,$08
| |
− | dc.b $C9,$04,$80,$18,$80,$0C
| |
− | dc.b $C8,$04,$80,$10
| |
− | dc.b $C8,$04,$80,$0C
| |
− | dc.b $C8,$0C
| |
− | dc.b $C9,$08
| |
− | dc.b $C8,$04,$80,$18,$80,$0C
| |
| | | |
− | if 1==1
| + | SndID__First = idstart |
− | ; this part of the original credits music (CNZ PSG) sounds buggy (dissonant) | + | SndID_Jump = id(SndPtr_Jump) ; A0 |
− | dc.b $C6,$04,$80,$10 | + | SndID_Checkpoint = id(SndPtr_Checkpoint) ; A1 |
− | dc.b $C6,$04,$80,$0C | + | SndID_SpikeSwitch = id(SndPtr_SpikeSwitch) ; A2 |
− | dc.b $C6,$0C | + | SndID_Hurt = id(SndPtr_Hurt) ; A3 |
− | dc.b $C8,$08
| + | SndID_Skidding = id(SndPtr_Skidding) ; A4 |
− | dc.b $C6,$04,$80,$18,$80,$0C
| + | SndID_BlockPush = id(SndPtr_BlockPush) ; A5 |
− | dc.b $C5,$04,$80,$10
| + | SndID_HurtBySpikes = id(SndPtr_HurtBySpikes) ; A6 |
− | dc.b $C5,$04,$80,$0C
| + | SndID_Sparkle = id(SndPtr_Sparkle) ; A7 |
− | dc.b $C5,$0C
| + | SndID_Beep = id(SndPtr_Beep) ; A8 |
− | dc.b $C7,$08 | + | SndID_Bwoop = id(SndPtr_Bwoop) ; A9 |
− | else
| + | SndID_Splash = id(SndPtr_Splash) ; AA |
− | ; replace the above block of notes with this to fix it.
| + | SndID_Swish = id(SndPtr_Swish) ; AB |
− | ; (I'm not sure why, but the notes $C6 and $C7 are broken here,
| + | SndID_BossHit = id(SndPtr_BossHit) ; AC |
− | ; so I've replaced them with pitch-shifted $C8s)
| + | SndID_InhalingBubble = id(SndPtr_InhalingBubble) ; AD |
− | dc.b $E1,-64
| + | SndID_ArrowFiring = id(SndPtr_ArrowFiring) ; AE |
− | dc.b $C8,$04,$80,$10 ; $C6
| + | SndID_LavaBall = id(SndPtr_LavaBall) ; AE |
− | dc.b $C8,$04,$80,$0C ; $C6
| + | SndID_Shield = id(SndPtr_Shield) ; AF |
− | dc.b $C8,$0C ; $C6 | + | SndID_LaserBeam = id(SndPtr_LaserBeam) ; B0 |
− | dc.b $E1,0 | + | SndID_Zap = id(SndPtr_Zap) ; B1 |
− | dc.b $C8,$08
| + | SndID_Drown = id(SndPtr_Drown) ; B2 |
− | dc.b $E1,-64
| + | SndID_FireBurn = id(SndPtr_FireBurn) ; B3 |
− | dc.b $C8,$04,$80,$24 ; $C6
| + | SndID_Bumper = id(SndPtr_Bumper) ; B4 |
− | dc.b $E1,0
| + | SndID_Ring = id(SndPtr_Ring) ; B5 |
− | dc.b $C5,$04,$80,$10
| + | SndID_RingRight = id(SndPtr_RingRight) ; B5 |
− | dc.b $C5,$04,$80,$0C | + | SndID_SpikesMove = id(SndPtr_SpikesMove) ; B6 |
− | dc.b $C5,$0C
| + | SndID_Rumbling = id(SndPtr_Rumbling) ; B7 |
− | dc.b $E1,-32
| + | SndID_Smash = id(SndPtr_Smash) ; B9 |
− | dc.b $C8,$08 ; $C7 | + | SndID_DoorSlam = id(SndPtr_DoorSlam) ; BB |
− | dc.b $E1,0
| + | SndID_SpindashRelease = id(SndPtr_SpindashRelease) ; BC |
| + | SndID_Hammer = id(SndPtr_Hammer) ; BD |
| + | SndID_Roll = id(SndPtr_Roll) ; BE |
| + | SndID_ContinueJingle = id(SndPtr_ContinueJingle) ; BF |
| + | SndID_CasinoBonus = id(SndPtr_CasinoBonus) ; C0 |
| + | SndID_Explosion = id(SndPtr_Explosion) ; C1 |
| + | SndID_WaterWarning = id(SndPtr_WaterWarning) ; C2 |
| + | SndID_EnterGiantRing = id(SndPtr_EnterGiantRing) ; C3 |
| + | SndID_BossExplosion = id(SndPtr_BossExplosion) ; C4 |
| + | SndID_TallyEnd = id(SndPtr_TallyEnd) ; C5 |
| + | SndID_RingSpill = id(SndPtr_RingSpill) ; C6 |
| + | SndID_Flamethrower = id(SndPtr_Flamethrower) ; C8 |
| + | SndID_Bonus = id(SndPtr_Bonus) ; C9 |
| + | SndID_SpecStageEntry = id(SndPtr_SpecStageEntry) ; CA |
| + | SndID_SlowSmash = id(SndPtr_SlowSmash) ; CB |
| + | SndID_Spring = id(SndPtr_Spring) ; CC |
| + | SndID_Blip = id(SndPtr_Blip) ; CD |
| + | SndID_RingLeft = id(SndPtr_RingLeft) ; CE |
| + | SndID_Signpost = id(SndPtr_Signpost) ; CF |
| + | SndID_CNZBossZap = id(SndPtr_CNZBossZap) ; D0 |
| + | SndID_Signpost2P = id(SndPtr_Signpost2P) ; D3 |
| + | SndID_OOZLidPop = id(SndPtr_OOZLidPop) ; D4 |
| + | SndID_SlidingSpike = id(SndPtr_SlidingSpike) ; D5 |
| + | SndID_CNZElevator = id(SndPtr_CNZElevator) ; D6 |
| + | SndID_PlatformKnock = id(SndPtr_PlatformKnock) ; D7 |
| + | SndID_BonusBumper = id(SndPtr_BonusBumper) ; D8 |
| + | SndID_LargeBumper = id(SndPtr_LargeBumper) ; D9 |
| + | SndID_Gloop = id(SndPtr_Gloop) ; DA |
| + | SndID_PreArrowFiring = id(SndPtr_PreArrowFiring) ; DB |
| + | SndID_Fire = id(SndPtr_Fire) ; DC |
| + | SndID_ArrowStick = id(SndPtr_ArrowStick) ; DD |
| + | SndID_Helicopter = id(SndPtr_Helicopter) ; DE |
| + | SndID_SuperTransform = id(SndPtr_SuperTransform) ; DF |
| + | SndID_SpindashRev = id(SndPtr_SpindashRev) ; E0 |
| + | SndID_Rumbling2 = id(SndPtr_Rumbling2) ; E1 |
| + | SndID_CNZLaunch = id(SndPtr_CNZLaunch) ; E2 |
| + | SndID_Flipper = id(SndPtr_Flipper) ; E3 |
| + | SndID_HTZLiftClick = id(SndPtr_HTZLiftClick) ; E4 |
| + | SndID_Leaves = id(SndPtr_Leaves) ; E5 |
| + | SndID_MegaMackDrop = id(SndPtr_MegaMackDrop) ; E6 |
| + | SndID_DrawbridgeMove = id(SndPtr_DrawbridgeMove) ; E7 |
| + | SndID_QuickDoorSlam = id(SndPtr_QuickDoorSlam) ; E8 |
| + | SndID_DrawbridgeDown = id(SndPtr_DrawbridgeDown) ; E9 |
| + | SndID_LaserBurst = id(SndPtr_LaserBurst) ; EA |
| + | SndID_Scatter = id(SndPtr_Scatter) ; EB |
| + | SndID_LaserFloor = id(SndPtr_LaserFloor) ; EB |
| + | SndID_Teleport = id(SndPtr_Teleport) ; EC |
| + | SndID_Error = id(SndPtr_Error) ; ED |
| + | SndID_MechaSonicBuzz = id(SndPtr_MechaSonicBuzz) ; EE |
| + | SndID_LargeLaser = id(SndPtr_LargeLaser) ; EF |
| + | SndID_OilSlide = id(SndPtr_OilSlide) ; F0 |
| + | SndID__End = id(SndPtr__End) ; F1 |
| + | if MOMPASS == 2 |
| + | if SndID__End > MusID_StopSFX |
| + | fatal "You have too many SndPtrs. SndID__End ($\{SndID__End}) can't exceed MusID_StopSFX ($\{MusID_StopSFX})." |
| + | endif |
| endif | | endif |
| + | </pre> |
| + | Yikes! that last section about IDs really has to go! But on another note, this code seems best for the Sonic 2 driver, it needs fixing. |
| + | the fixed version is below: |
| + | <pre> |
| + | SndID__First = $33 |
| + | SndID_RingRight = $33 |
| + | SndID_RingLeft = $34 |
| + | SndID_Hurt = $35 |
| + | SndID_Skidding = $36 |
| + | SndID_HurtBySpikes = $37 |
| + | SndID_InhalingBubble = $38 |
| + | SndID_Splash = $39 |
| + | SndID_Shield = $3A |
| + | SndID_Drown = $3B |
| + | SndID_Roll = $3C |
| + | SndID_Explosion = $3D |
| + | SndID_ShieldFire = $3E |
| + | SndID_ShieldWater = $3F |
| + | SndID_UnkSpark = $40 |
| + | SndID_ShieldMagnet = $41 |
| + | SndID_ShieldInstant = $42 |
| + | SndID_ShieldFAction = $43 |
| + | SndID_ShieldWAction = $44 |
| + | SndID_ShieldMAction = $45 |
| + | SndID_SSMonitor = $46 |
| + | SndID_Unk1 = $47 |
| + | SndID_RhinoCharge = $48 |
| + | SndID_PunchVehic = $49 |
| + | SndID_TailsCatch = $4A |
| + | SndID_RockAppear = $4B |
| + | SndID_KTEDrop = $4C |
| + | SndID_BotShoot = $4D |
| + | SndID_LargeLaser = $4E |
| + | SndID_FireBurn = $4F |
| + | SndID_MechLBZDoorSlam = $50 |
| + | SndID_BotThrow = $51 |
| + | SndID_SpikeSwitch = $52 |
| + | SndID_TeleportStart = $53 |
| + | SndID_LargeLaser2 = $54 |
| + | SndID_HTZLiftClick = $55 |
| + | SndID_UnkDrop = $56 |
| + | SndID_BigSplash = $57 |
| + | SndID_DoorSlam = $58 |
| + | SndID_Smash = $59 |
| + | SndID_S3DLauncher = $5A |
| + | SndID_SwitchButton = $5B |
| + | SndID_MetMalfunction = $5C |
| + | SndID_KTEThud = $5D |
| + | SndID_LaserBeam = $5E |
| + | SndID_Hammer = $5F |
| + | SndID_MGZBossWhirr = $60 |
| + | SndID_MechCrash = $61 |
| + | SndID_Jump = $62 |
| + | SndID_Checkpoint = $63 |
| + | SndID_SpikesMove = $64 |
| + | SndID_SSSphere = $65 |
| + | SndID_SSComplete = $66 |
| + | SndID_PreArrowFiring = $67 |
| + | SndID_Unlock = $68 |
| + | SndID_BlockPush = $69 |
| + | SndID_SpecStageExit = $6A |
| + | SndID_S1SSSpecial = $6B |
| + | SndID_Splash2 = $6C |
| + | SndID_MObjMove = $6D |
| + | SndID_BossHit = $6E |
| + | SndID_Rumbling = $6F |
| + | SndID_LavaBall = $70 |
| + | SndID_ShieldAgain = $71 |
| + | SndID_AntiGravTube = $72 |
| + | SndID_TeleportEnd = $73 |
| + | SndID_Repel = $74 |
| + | SndID_PlatformRise = $75 |
| + | SndID_Trapdoor = $76 |
| + | SndID_BalloonPop = $77 |
| + | SndID_S3DZapper = $78 |
| + | SndID_Zap = $79 |
| + | SndID_Unk2 = $7A |
| + | SndID_Bounce = $7B |
| + | SndID_ArrowFiring = $7C |
| + | SndID_Unk3 = $7D |
| + | SndID_Unk4 = $7E |
| + | SndID_Flamethrower2 = $7E |
| + | SndID_IZIceSpikeball = $80 |
| + | SndID_LBZCannon = $81 |
| + | SndID_Unk5 = $82 |
| + | SndID_KTEBlowBridge = $83 |
| + | SndID_Unk6 = $84 |
| + | SndID_Unk7 = $85 |
| + | SndID_LBZAlarm = $86 |
| + | SndID_ShroomBounce = $87 |
| + | SndID_MHZHandlePull = $88 |
| + | SndID_Beep = $89 |
| + | SndID_GhostFlee = $8A |
| + | SndID_Chop = $8B |
| + | SndID_BotDash = $8C |
| + | SndID_Unk8 = $8D |
| + | SndID_Unk9 = $8E |
| + | SndID_SZStoneDoor = $8F |
| + | SndID_SZDoorTimer = $90 |
| + | SndID_SZDoorClose = $91 |
| + | SndID_GhostCome = $92 |
| + | SndID_SZBossIllusion = $93 |
| + | SndID_LRZPlatformBelt = $94 |
| + | SndID_LRZMBArm = $95 |
| + | SndID_CrushingBlk = $96 |
| + | SndID_Unk10 = $97 |
| + | SndID_Unk20 = $98 |
| + | SndID_Unk11 = $99 |
| + | SndID_SpringPltfrm = $9A |
| + | SndID_GolemBossWalk = $9B |
| + | SndID_Sparkle = $9C |
| + | SndID_SMLaser = $9D |
| + | SndID_Unk12 = $9E |
| + | SndID_Teleport2 = $9F |
| + | SndID_SSZEggRoboFly = $A0 |
| + | SndID_Unk13 = $A1 |
| + | SndID_Unk14 = $A2 |
| + | SndID_CNZElevator = $A3 |
| + | SndID_Unk15 = $A4 |
| + | SndID_Unk16 = $A5 |
| + | SndID_Unk17 = $A6 |
| + | SndID_Ready = $A7 |
| + | SndID_MechaSonicBuzz = $A8 |
| + | SndID_WaterWarning = $A9 |
| + | SndID_Bumper = $AA |
| + | SndID_SpindashRev = $AB |
| + | SndID_ContinueJingle = $AC |
| + | SndID_Go = $AD |
| + | SndID_Catapult = $AE |
| + | SndID_SpecStageEntry = $AF |
| + | SndID_TallyEnd = $B0 |
| + | SndID_Spring = $B1 |
| + | SndID_Error = $B2 |
| + | SndID_EnterGiantRing = $B3 |
| + | SndID_BossExpOld = $B4 |
| + | SndID_SpecStageGlass = $B5 |
| + | SndID_SpindashRelease = $B6 |
| + | SndID_CasinoBonus = $B7 |
| + | SndID_Sparkle2 = $B8 |
| + | SndID_RingSpill = $B9 |
| + | SndID_TailsFly = $BA |
| + | SndID_TailsExhaust = $BB |
| + | SndID_Unk18 = $BC |
| + | SndID_FBFlyBy = $BD |
| + | SndID_EggmobileMHZ = $BE |
| + | SndID_MBHCZSwirl = $BF |
| + | SndID_Propeller2 = $C0 |
| + | SndID_Propeller = $C1 |
| + | SndID_Flamethrower = $C2 |
| + | SndID_OrbitOrb = $C3 |
| + | SndID_MBDEZAngry = $C4 |
| + | SndID_Unk19 = $C5 |
| + | SndID_Levitate = $C6 |
| + | SndID_CNZCannon = $C7 |
| + | SndID_OilSlide = $C8 |
| + | SndID_MGZMace = $C9 |
| + | SndID_RaceTrackDEZ = $CA |
| + | SndID_Rumbling2 = $CB |
| + | SndID_Crumbling = $CC |
| + | SndID_DeathEggFly = $CD |
| + | SndID_Unk21 = $CE |
| + | SndID_Unk22 = $CF |
| + | SndID_MPltfrmRise = $D0 |
| + | SndID_Unk23 = $D1 |
| + | SndID_Chain = $D2 |
| + | SndID_Unk24 = $D3 |
| + | SndID_KTEBlower = $D4 |
| + | SndID_Lavafall = $D5 |
| + | SndID_Unk25 = $D6 |
| + | SndID_Chain2 = $D7 |
| + | SndID_Unk26 = $D8 |
| + | SndID_DEZTube = $D9 |
| + | SndID_Unk27 = $DA |
| + | SndID_Unk28 = $DB |
| + | Snd_Open1 = $DC |
| + | Snd_Open2 = $DD |
| + | Snd_Open3 = $DE |
| + | Snd_Open4 = $DF |
| | | |
− | dc.b $C5,$04,$80,$18
| + | ;compatibility sfx |
− | dc.b $E3
| + | SndID_Ring = SndID_RingRight |
− | MusCreditsE28F: dc.b $EF,$25,$80,$0C,$D0,$D4,$D7,$DB,$0C,$80,$06,$DB
| + | SndID_Teleport = SndID_TeleportEnd |
− | dc.b $0C,$DC,$06,$DB,$0C,$DD,$60,$DE,$0C,$80,$DE,$80
| + | SndID_BossExplosion = SndID_Explosion ;for original sound, use SndID_BossExpOld |
− | dc.b $80,$06,$DD,$12,$DE,$0C,$E3
| + | SndID_Bwoop = SndID_Lavafall |
− | MusCreditsE2AE: dc.b $80,$18,$B5,$0B,$80,$0D,$B7,$0C,$0B,$80,$19,$BA
| + | SndID_Swish = SndID_Unk28 |
− | dc.b $0C,$0B,$80,$0D,$E3
| + | SndID_Blip = SndID_SwitchButton |
− | MusCreditsE2BF: dc.b $C3,$05,$80,$13,$C3,$12,$C3,$05,$E3
| + | SndID_SlowSmash = SndID_Smash |
− | MusCreditsE2C8: dc.b $CA,$06,$80,$CA,$80,$C6,$80,$C6,$80,$E3
| + | SndID_Signpost = SndID_Sparkle2 |
− | MusCreditsE2D2: dc.b $AF,$0C,$B3,$06,$B6,$0C,$AF,$B1,$06,$80,$B1,$0C
| + | SndID_Bonus = SndID_BotDash |
− | dc.b $B5,$06,$B8,$0C,$B1,$06,$80,$B6,$0C,$BA,$06,$B1
| + | SndID_CNZBossZap = SndID_S3DZapper |
− | dc.b $0C,$B5,$B6,$BA,$06,$80,$BA,$AF,$0C,$B3,$B5,$B8
| + | SndID_Signpost2P = SndID_Sparkle2 |
− | dc.b $06,$B2,$0C,$B3,$B5,$B8,$06,$80,$B8,$B2,$0C,$B5
| + | SndID_OOZLidPop = SndID_ArrowFiring |
− | dc.b $E3
| + | SndID_SlidingSpike = SndID_SSZEggRoboFly |
− | MusCred_FM5: dc.b $E9,$E8,$E6,$F8,$E1,$05,$F8
| + | SndID_PlatformKnock = SndID_Chop |
− | dc.w z80_ptr(MusCreditsDB06)
| + | SndID_BonusBumper = SndID_Bounce |
− | dc.b $E9,$18,$E6,$08,$E1,$00,$EF,$02
| + | SndID_LargeBumper = SndID_Catapult |
− | dc.b $F0,$0C,$01,$FC,$04
| + | SndID_Gloop = SndID_Lavafall |
− | dc.b $F8
| + | SndID_Fire = SndID_FireBurn |
− | dc.w z80_ptr(MusCreditsE4E8)
| + | SndID_ArrowStick = SndID_KTEDrop |
− | dc.b $B1,$3C,$F8
| + | SndID_Helicopter = SndID_TailsFly |
− | dc.w z80_ptr(MusCreditsE4E8)
| + | SndID_SuperTransform = SndID_Teleport2 |
− | dc.b $B5,$3C,$E9,$F4,$E6,$07
| + | SndID_CNZLaunch = SndID_KTEBlowBridge |
− | dc.b $F0,$30,$01,$04,$04
| + | SndID_Flipper = SndID_Catapult |
− | dc.b $EF,$06
| + | SndID_Leaves = SndID_Unk28 |
− | - dc.b $C4,$30,$E7,$30,$C6,$E7,$30,$C2,$E7,$30,$C1,$E7
| + | SndID_MegaMackDrop = SndID_Unk28 |
− | dc.b $30
| + | SndID_DrawbridgeMove = SndID_Trapdoor |
− | dc.b $F7,$00,$02
| + | SndID_QuickDoorSlam = SndID_DoorSlam |
− | dc.w z80_ptr(-)
| + | SndID_DrawbridgeDown = SndID_Trapdoor |
− | dc.b $EF,$0A,$E6,$F6
| + | SndID_LaserBurst = SndID_LargeLaser |
− | dc.b $F0,$0C,$01,$05,$04
| + | SndID_LaserFloor = SndID_LargeLaser2 |
− | dc.b $E0,$80
| + | SndID_Scatter = SndID_Unk14 |
− | - dc.b $F8
| + | SndID__End = $E0 |
− | dc.w z80_ptr(MusCreditsE4F9)
| + | </pre> |
− | dc.b $80,$25,$C6,$06,$C6,$80,$0C,$C6,$06,$C6,$05,$80
| |
− | dc.b $0D,$C6,$06,$C8,$30,$E7,$06,$F8
| |
− | dc.w z80_ptr(MusCreditsE4F9)
| |
− | dc.b $80,$31,$80,$60
| |
− | dc.b $F7,$00,$02
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $80,$60,$80,$48,$E6,$05,$F4,$80,$01,$EF,$0C,$E1
| |
− | dc.b $FE,$E0,$40,$F8
| |
− | dc.w z80_ptr(MusCreditsDD9D)
| |
− | dc.b $23,$80,$0C,$80,$60,$EF,$11,$E9,$F4,$E6,$F4,$E1
| |
− | dc.b $00,$E0,$C0
| |
− | dc.b $F0,$06,$01,$06,$05
| |
− | dc.b $80,$60,$80,$30,$C2,$06,$C2,$C9,$C6,$1E,$80,$60
| |
− | dc.b $80,$06,$CB,$80,$CB,$C9,$80,$C9,$80,$C7,$80,$C7
| |
− | dc.b $80,$C6,$03,$80,$C6,$80,$09,$80,$06,$80,$60,$80
| |
− | dc.b $30,$C2,$06,$C2,$C9,$C6,$1E,$80,$60,$EF,$16,$E9
| |
− | dc.b $0C,$E6,$04,$F4,$E0,$80,$80,$01,$F8
| |
− | dc.w z80_ptr(MusCreditsE22D)
| |
− | dc.b $80,$2F,$F8
| |
− | dc.w z80_ptr(MusCreditsE4CD)
| |
− | dc.b $80,$30,$F8
| |
− | dc.w z80_ptr(MusCreditsE4CD)
| |
− | dc.b $80,$60,$EF,$19,$E9,$F4,$E0,$C0,$F8
| |
− | dc.w z80_ptr(MusCreditsE502)
| |
− | dc.b $80,$27,$B1,$03,$F8
| |
− | dc.w z80_ptr(MusCreditsE502)
| |
− | dc.b $80,$2A,$80,$60,$EF,$1E,$E9,$F4,$E8,$06
| |
− | - dc.b $80,$0C,$C4,$06,$12,$18,$C8,$06,$12,$0C,$80,$C6
| |
− | dc.b $06,$12,$18,$C8,$06,$12,$0C
| |
− | dc.b $F7,$00,$02
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $80,$60,$EF,$20,$E8,$00,$E9,$18,$E6,$FA,$B8,$03
| |
− | dc.b $E7,$BA,$5D,$B6,$03,$E7,$B8,$5D,$B4,$03,$E7,$B6
| |
− | dc.b $5D,$B6,$03,$E7,$B8,$5D,$80,$60,$EF,$22,$E9,$F4
| |
− | dc.b $E6,$05
| |
− | dc.b $F0,$1C,$01,$06,$04
| |
− | dc.b $80,$50,$A7,$04,$A9,$08,$AC,$04,$B1,$30,$80,$0C
| |
− | dc.b $B1,$08,$80,$04,$B3,$08,$B1,$10,$B5,$08,$B5,$04
| |
− | dc.b $80,$08,$B0,$34,$80,$0C,$B0,$B5,$08,$04,$80,$08
| |
− | dc.b $B1,$04,$AE,$24,$80,$0C,$AE,$08,$80,$04,$B0,$08
| |
− | dc.b $AE,$04,$B1,$0C,$AF,$08,$AD,$4C,$80,$0C,$B1,$08
| |
− | dc.b $80,$04,$B3,$08,$80,$04,$B1,$08,$80,$04,$B5,$08
| |
− | dc.b $B5,$04,$80,$08,$B0,$1C,$80,$0C,$B5,$18,$B8,$08
| |
− | dc.b $B5,$04,$BA,$18,$80,$0C,$B6,$04,$80,$08,$B5,$18
| |
− | dc.b $B1,$AE,$B0,$0C,$E6,$04,$B6,$04,$80,$08,$B5,$18
| |
− | dc.b $B1,$AE,$B0,$0C,$E6,$F8,$B6,$04,$80,$08,$B5,$18
| |
− | dc.b $B1,$AE,$AA,$14,$A9,$04,$E6,$0C,$EF,$23,$E1,$03
| |
− | dc.b $E6,$F7,$80,$60,$F8
| |
− | dc.w z80_ptr(MusCreditsDABE)
| |
− | dc.b $E6,$09
| |
− | dc.b $F0,$00,$01,$06,$04
| |
− | dc.b $F8
| |
− | dc.w z80_ptr(MusCreditsE28F)
| |
− | dc.b $F2
| |
− | MusCreditsE4CD: dc.b $80,$1E,$EF,$14,$A4,$12,$A5,$06,$EF,$16,$80,$30
| |
− | dc.b $80,$06,$BD,$08,$BC,$04,$BB,$08,$BA,$04,$B9,$08
| |
− | dc.b $B8,$04,$E3
| |
− | MusCreditsE4E8: dc.b $80,$18,$B1,$0B,$80,$0D,$B3,$0C,$0B,$80,$19,$B6
| |
− | dc.b $0C,$0B,$80,$0D,$E3
| |
− | MusCreditsE4F9: dc.b $C6,$05,$80,$13,$C6,$12,$C6,$05,$E3
| |
− | MusCreditsE502: dc.b $80,$60,$AC,$06,$80,$AC,$0C,$AE,$06,$80,$AE,$0C
| |
− | dc.b $AF,$06,$E3
| |
− | MusCred_PSG1: dc.b $80,$30
| |
− | dc.b $F7,$00,$1A
| |
− | dc.w z80_ptr(MusCred_PSG1)
| |
− | - dc.b $C4,$30,$E7,$30,$C6,$E7,$30,$C2,$E7,$30,$C1,$E7
| |
− | dc.b $30
| |
− | dc.b $F7,$00,$02
| |
− | dc.w z80_ptr(-)
| |
− | - dc.b $80,$30
| |
− | dc.b $F7,$00,$10
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $80,$60
| |
− | - dc.b $80,$30
| |
− | dc.b $F7,$00,$0A
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $80,$60,$E9,$F4,$E6,$FE,$F5,$01,$F8
| |
− | dc.w z80_ptr(MusCreditsE635)
| |
− | dc.b $AE,$B3,$06,$AC,$0C,$AE,$AE,$B3,$06,$80,$B3,$AB
| |
− | dc.b $0C,$AE,$F8
| |
− | dc.w z80_ptr(MusCreditsE635)
| |
− | dc.b $F5,$0B,$80,$04,$80,$60,$F8
| |
− | dc.w z80_ptr(MusCreditsDA5F)
| |
− | dc.b $E7,$20,$E7,$C5,$01,$E7,$C4,$E7,$C3,$E7,$C2,$E7
| |
− | dc.b $C1,$E7,$C0,$E7,$BF,$E7,$BE,$E7,$BD,$E7,$BC,$E7
| |
− | dc.b $BB,$E7,$BA,$80,$60,$F5,$00,$E8,$06,$E9,$F4,$F8
| |
− | dc.w z80_ptr(MusCreditsE62C)
| |
− | dc.b $C2,$80,$C2,$F8
| |
− | dc.w z80_ptr(MusCreditsE62C)
| |
− | dc.b $C2,$04,$80,$C2,$80,$0C,$C2,$80,$60,$F5,$08,$E9
| |
− | dc.b $04,$EC,$02,$E8,$06
| |
− | - dc.b $F8
| |
− | dc.w z80_ptr(MusCreditsE618)
| |
− | dc.b $F7,$00,$02
| |
− | dc.w z80_ptr(-)
| |
− | - dc.b $80,$30
| |
− | dc.b $F7,$00,$0A
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $80,$60,$F5,$00,$E9,$F0,$EC,$FF,$80,$60
| |
− | dc.b $F8
| |
− | dc.w z80_ptr(MusCreditsE004)
| |
− | dc.b $E9,$18,$EC,$02,$B5,$30,$B3,$18,$B5,$0C,$B3,$B1
| |
− | dc.b $30,$B6,$EC,$FE,$80,$0C,$B8,$80,$B8,$80,$BA,$80
| |
− | dc.b $BA,$EC,$03,$C4,$18,$C1,$BD,$BF,$0C,$80,$EC,$FC
| |
− | dc.b $80,$B8,$80,$B8,$80,$BA,$18,$08,$B8,$04,$E9,$F4
| |
− | dc.b $EC,$01,$F5,$05
| |
− | - dc.b $80,$60
| |
− | dc.b $F7,$00,$05
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $80,$0C,$C8,$12,$80,$06,$C8,$80,$C6,$12,$C8,$C6
| |
− | dc.b $0C,$C1,$18,$C5,$C8,$CB,$80,$0C,$CA,$80,$CA,$12
| |
− | dc.b $C9,$CA,$06,$80,$09,$E9,$30,$EC,$FC,$F6
| |
− | dc.w z80_ptr(MusCreditsE770)
| |
− | dc.b $F2
| |
− | MusCreditsE618: dc.b $80,$0C,$BD,$06,$12,$18,$C4,$06,$12,$0C,$80,$C2
| |
− | dc.b $06,$12,$18,$C4,$06,$12,$0C,$E3
| |
− | MusCreditsE62C: dc.b $80,$60,$80,$0C,$C2,$80,$C2,$80,$E3
| |
− | MusCreditsE635: dc.b $AC,$0C,$AF,$06,$B3,$0C,$AC,$AC,$06,$80,$AC,$0C
| |
− | dc.b $AF,$06,$B5,$0C,$AC,$06,$80,$06,$B1,$0C,$B6,$06
| |
− | dc.b $AE,$0C,$B1,$B3,$B6,$06,$80,$B6,$AA,$0C,$AF,$AF
| |
− | dc.b $B5,$06,$AC,$0C,$AF,$B2,$B5,$06,$80,$B5,$AE,$0C
| |
− | dc.b $B2,$E3
| |
− | MusCred_PSG2: dc.b $80,$30
| |
− | dc.b $F7,$00,$1A
| |
− | dc.w z80_ptr(MusCred_PSG2)
| |
− | - dc.b $C1,$30,$E7,$30,$C3,$E7,$30,$BF,$E7,$30,$BD,$E7
| |
− | dc.b $30
| |
− | dc.b $F7,$00,$02
| |
− | dc.w z80_ptr(-)
| |
− | - dc.b $80,$30
| |
− | dc.b $F7,$00,$10
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $80,$60,$E9,$0C,$EC,$FD,$F5,$04,$80
| |
− | - dc.b $F8
| |
− | dc.w z80_ptr(MusCreditsDFF2)
| |
− | dc.b $F7,$00,$02
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $80,$60
| |
− | dc.b $F0,$03,$02,$01,$05
| |
− | dc.b $F5,$0A,$E9,$E8,$EC,$02,$80,$30,$80,$80,$BD,$06
| |
− | dc.b $BF,$C6,$C2,$1E,$80,$60,$80,$06,$C6,$80,$C6,$C4
| |
− | dc.b $80,$C4,$80,$C3,$80,$C3,$80,$BF,$03,$80,$BF,$80
| |
− | dc.b $09,$80,$06,$80,$30,$80,$80,$BD,$06,$BF,$C6,$C2
| |
− | dc.b $1E,$80,$60,$F4
| |
− | - dc.b $80,$30
| |
− | dc.b $F7,$00,$0C
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $F5,$00,$EC,$FE,$E8,$06,$80,$60,$80,$0C,$BF,$80
| |
− | dc.b $BF,$80,$BF,$80,$BF,$80,$60,$80,$0C,$BF,$80,$BF
| |
− | dc.b $80,$BF,$04,$80,$BF,$80,$0C,$BF,$80,$60,$EC,$02
| |
− | - dc.b $F8
| |
− | dc.w z80_ptr(MusCreditsE618)
| |
− | dc.b $F7,$00,$02
| |
− | dc.w z80_ptr(-)
| |
− | - dc.b $80,$30
| |
− | dc.b $F7,$00,$0A
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $80,$60,$F5,$00,$E9,$F4,$EC,$FF,$E9,$E8,$80,$60
| |
− | dc.b $F8
| |
− | dc.w z80_ptr(MusCreditsE246)
| |
− | dc.b $E9,$18,$EC,$02,$B1,$30,$B0,$18,$B1,$0C,$B0,$AE
| |
− | dc.b $30,$B1,$EC,$FE,$80,$0C,$B5,$80,$B5,$80,$B6,$80
| |
− | dc.b $B6,$EC,$03,$80,$B1,$80,$B1,$80,$B1,$80,$B1,$EC
| |
− | dc.b $FC,$80,$B1,$80,$B1,$80,$B1,$18,$08,$B1,$04,$EC
| |
− | dc.b $01,$E9,$18,$F5,$05,$E1,$01,$80,$60,$80,$80,$80
| |
− | dc.b $80,$80,$80,$0C,$CD,$06,$80,$D4,$CD,$80,$0C,$CD
| |
− | dc.b $06,$80,$D4,$CD,$80,$18,$80,$54,$E9,$24,$EC,$FD
| |
− | MusCreditsE770: dc.b $F5,$03,$80,$06
| |
− | - dc.b $BF,$03,$C1,$C3,$EC,$01,$E9,$FF
| |
− | dc.b $F7,$00,$05
| |
− | dc.w z80_ptr(-)
| |
− | - dc.b $BF,$03,$C1,$C3,$EC,$01,$E9,$01
| |
− | dc.b $F7,$00,$07
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $F2
| |
− | MusCred_PSG3: dc.b $F3,$E7,$80,$60,$F5,$02
| |
− | - dc.b $C6,$0C,$0C,$0C,$06,$06,$0C,$0C,$06,$06,$0C
| |
− | dc.b $F7,$00,$08
| |
− | dc.w z80_ptr(-)
| |
− | - dc.b $80,$30
| |
− | dc.b $F7,$00,$08
| |
− | dc.w z80_ptr(-)
| |
− | - dc.b $C6,$0C,$06,$06
| |
− | dc.b $F7,$00,$1F
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $0C,$F5,$03,$C6,$F5,$02
| |
− | - dc.b $C6,$0C,$06,$06
| |
− | dc.b $F7,$00,$07
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $06,$06,$06,$06
| |
− | dc.b $F7,$01,$04
| |
− | dc.w z80_ptr(-)
| |
− | - dc.b $80,$30
| |
− | dc.b $F7,$00,$0C
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $F5,$04,$EC,$02
| |
− | - dc.b $E8,$03,$C6,$06,$06,$E8,$00,$0C
| |
− | dc.b $F7,$00,$04
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $F5,$02,$EC,$FD
| |
− | - dc.b $80,$0C,$C6,$06,$80,$07,$C6,$06,$80,$11,$C6,$0C
| |
− | dc.b $80,$06,$C6,$0C,$80,$06,$C6,$80
| |
− | dc.b $F7,$00,$07
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $EC,$02
| |
− | - dc.b $C6,$0C,$08,$04
| |
− | dc.b $F7,$00,$18
| |
− | dc.w z80_ptr(-)
| |
− | - dc.b $C6,$0C,$0C,$0C,$08,$04
| |
− | dc.b $F7,$00,$08
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $80,$60,$F5,$04,$EC,$02
| |
− | - dc.b $C6,$06,$06,$0C
| |
− | dc.b $F7,$00,$10
| |
− | dc.w z80_ptr(-)
| |
− | - dc.b $80,$30
| |
− | dc.b $F7,$00,$0A
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $80,$60,$EC,$FF
| |
− | - dc.b $F5,$01,$C6,$0C,$F5,$02,$EC,$FF,$08,$F5,$01,$EC
| |
− | dc.b $01,$04
| |
− | dc.b $F7,$00,$27
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $EC,$FF,$F5,$04
| |
− | - dc.b $E8,$03,$C6,$0C,$E8,$0C,$0C
| |
− | dc.b $F7,$00,$1E
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $E8,$03,$C6,$06,$E8,$0E,$12,$E8,$03,$0C,$E8,$0F
| |
− | dc.b $0C,$F2
| |
− | MusCred_DAC: dc.b $82,$06,$82,$82,$82,$82,$0C,$06,$0C,$06,$0C,$0C
| |
− | dc.b $0C
| |
− | - dc.b $81,$18,$82
| |
− | dc.b $F7,$00,$0E
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $81,$0C
| |
− | - dc.b $82
| |
− | dc.b $F7,$00,$07
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $EA,$EA,$F8
| |
− | dc.w z80_ptr(MusCreditsEA6E)
| |
− | dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$84,$04,$06,$02
| |
− | dc.b $81,$0C,$82,$06,$82,$82,$82,$81,$0C,$82,$06,$82
| |
− | dc.b $81,$81,$82,$82,$82,$82
| |
− | - dc.b $81,$18,$82,$81,$82
| |
− | dc.b $F7,$00,$07
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $81,$0C,$82,$82,$82,$82,$06,$82,$8C,$8C,$8D,$8D
| |
− | dc.b $8E,$8E,$F8
| |
− | dc.w z80_ptr(MusCreditsEA84)
| |
− | dc.b $81,$18,$82,$0C,$81,$18,$82,$0C,$82,$82,$06,$82
| |
− | dc.b $F8
| |
− | dc.w z80_ptr(MusCreditsEA84)
| |
− | dc.b $81,$0C,$82,$82,$82,$8D,$06,$8D,$8E,$8E,$82,$06
| |
− | dc.b $82,$8D,$0C,$82,$0C,$82,$06,$82,$80,$82,$82,$0C
| |
− | MusCreditsE8E5: dc.b $82,$0C,$82,$82,$06,$82,$8D,$8D
| |
− | - dc.b $81,$0C,$8F,$06,$90,$82,$0C,$90,$06,$91,$81,$0C
| |
− | dc.b $8F,$06,$91,$82,$0C,$8F,$06,$91
| |
− | dc.b $F7,$00,$04
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $81,$0C,$8F,$06,$91,$82,$0C,$8F,$06,$91,$8C,$06
| |
− | dc.b $03,$03,$8D,$06,$8D,$8D,$8E,$8E,$8E,$81,$06,$0C
| |
− | dc.b $82,$06,$80,$0C,$81,$82,$8E,$82,$06,$82,$82,$82
| |
− | - dc.b $81,$0C,$82,$06,$81,$12,$81,$06,$81,$12,$8C,$06
| |
− | dc.b $82,$0C,$83,$06,$81,$80
| |
− | dc.b $F7,$00,$06
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $81,$0C,$82,$06,$81,$12,$81,$06,$81,$06,$82,$06
| |
− | dc.b $81,$0C,$06,$82,$0C,$08,$04,$EA,$CD,$82,$30,$82
| |
− | dc.b $0C,$82,$82,$82,$08,$04,$F8
| |
− | dc.w z80_ptr(MusCreditsEA9F)
| |
− | dc.b $F8
| |
− | dc.w z80_ptr(MusCreditsEA9F)
| |
− | dc.b $81,$08,$0C,$04,$82,$0C,$81,$08,$04,$82,$08,$04
| |
− | dc.b $08,$04,$04,$04,$04,$08,$04,$EA,$C5
| |
− | - dc.b $81,$09,$81,$03,$0C,$82,$81,$81,$18,$82
| |
− | dc.b $F7,$00,$03
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $81,$09,$81,$03,$0C,$82,$81,$81,$18,$82,$0C,$06
| |
− | dc.b $06,$81,$0C,$82,$06,$82,$82,$82,$8D,$0C,$82,$0C
| |
− | dc.b $0C,$0C,$06,$06
| |
− | - dc.b $81,$0C,$81,$82,$80,$81,$81,$82,$83
| |
− | dc.b $F7,$00,$03
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $81,$82,$82,$82,$82,$06,$06,$06,$06,$0C,$06,$06
| |
− | dc.b $81,$06,$81,$82,$82,$81,$82,$81,$81,$82,$02,$82
| |
− | dc.b $04,$81,$0C,$06,$82,$0C,$06,$06,$81,$18,$82,$0C
| |
− | dc.b $81,$81,$18,$82,$81,$06,$81,$12,$82,$0C,$81,$81
| |
− | dc.b $18,$82,$81,$18,$82,$0C,$81,$81,$18,$82,$81,$06
| |
− | dc.b $81,$12,$82,$0C,$0C,$06,$06,$06,$06,$0C,$06,$06
| |
− | dc.b $82,$02,$04,$81,$0C,$06,$0C,$82,$02,$04,$81,$0C
| |
− | dc.b $06,$0C,$82,$06,$82,$82,$82,$EA,$C0,$81,$0C,$82
| |
− | dc.b $81,$82,$81,$82,$81,$08,$82,$04,$0C
| |
− | - dc.b $81,$0C,$82
| |
− | dc.b $F7,$00,$0F
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $81,$08,$82,$04,$0C
| |
− | - dc.b $81,$0C,$82
| |
− | dc.b $F7,$00,$13
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $82,$08,$0C,$04,$81,$0C,$82,$81,$82,$81,$0C,$82
| |
− | dc.b $81,$06,$80,$02,$82,$82,$82,$09,$82,$03
| |
− | - dc.b $81,$0C,$82
| |
− | dc.b $F7,$00,$06
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $81,$0C,$82,$81,$06,$80,$02,$82,$82,$82,$09,$82
| |
− | dc.b $03
| |
− | dc.b $F7,$01,$03
| |
− | dc.w z80_ptr(-)
| |
− | dc.b $81,$0C,$82,$81,$82,$81,$06,$82,$12,$82,$0C,$81
| |
− | dc.b $F2
| |
− | MusCreditsEA6E: dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$84,$04,$06,$02
| |
− | dc.b $81,$0C,$8D,$82,$81,$81,$8E,$82,$83,$E3
| |
− | MusCreditsEA84: dc.b $81,$18,$82,$0C,$81,$18,$0C,$82,$81,$81,$18,$82
| |
− | dc.b $0C,$81,$12,$81,$82,$18,$81,$82,$0C,$81,$18,$0C
| |
− | dc.b $82,$81,$E3
| |
− | MusCreditsEA9F: dc.b $81,$08,$0C,$04,$82,$0C,$81,$08,$0C,$82,$04,$81
| |
− | dc.b $0C,$82,$81,$81,$08,$0C,$04,$82,$0C,$81,$08,$0C
| |
− | dc.b $82,$04,$81,$0C,$82,$82,$08,$04,$E3,$81,$06,$80
| |
− | dc.b $03,$81,$81,$06,$82,$81,$06,$80,$03,$81,$81,$06
| |
− | dc.b $82,$03,$82,$81,$06,$80,$03,$81,$81,$06,$82,$E3
| |
− | MusCred_Voices: dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E
| |
− | dc.b $03,$00,$00,$00,$01,$1F,$1F,$FF,$0F,$17,$27,$28,$80
| |
− | dc.b $08,$09,$30,$70,$00,$1F,$5F,$1F,$5F,$12,$0A,$0E
| |
− | dc.b $0A,$00,$04,$04,$03,$2F,$2F,$2F,$2F,$25,$0E,$30,$84
| |
− | dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00
| |
− | dc.b $00,$04,$04,$00,$00,$10,$10,$0B,$0D,$19,$0B,$80,$80
| |
− | dc.b $08,$0A,$30,$70,$00,$1F,$5F,$1F,$5F,$12,$0A,$0E
| |
− | dc.b $0A,$00,$04,$04,$03,$2F,$2F,$2F,$2F,$24,$13,$2D,$80
| |
− | dc.b $3D,$01,$51,$21,$01,$12,$14,$14,$0F,$0A,$05,$05
| |
− | dc.b $05,$00,$00,$00,$00,$2B,$2B,$2B,$1B,$19,$80,$80,$80
| |
− | dc.b $04,$57,$70,$02,$50,$1F,$1F,$1F,$1F,$00,$00,$00
| |
− | dc.b $00,$06,$00,$0A,$0A,$00,$00,$0F,$0F,$1A,$10,$80,$80
| |
− | dc.b $35,$01,$13,$01,$00,$1F,$18,$1D,$19,$00,$06,$09
| |
− | dc.b $0D,$00,$02,$00,$03,$00,$15,$06,$16,$1E,$83,$80,$80
| |
− | dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00
| |
− | dc.b $00,$04,$04,$00,$00,$1F,$1F,$0F,$0F,$1A,$16,$88,$88
| |
− | dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06
| |
− | dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$14,$0F,$37,$80
| |
− | dc.b $3B,$0F,$01,$06,$02,$DF,$1F,$1F,$DF,$0C,$0A,$00
| |
− | dc.b $03,$0F,$00,$00,$01,$F3,$55,$05,$5C,$22,$22,$20,$80
| |
− | dc.b $3C,$31,$50,$52,$30,$52,$52,$53,$53,$08,$08,$00
| |
− | dc.b $00,$04,$04,$00,$00,$1F,$1F,$0F,$0F,$1C,$14,$84,$80
| |
− | dc.b $3A,$69,$50,$70,$60,$1C,$1A,$18,$18,$10,$02,$0C
| |
− | dc.b $09,$08,$06,$06,$03,$F9,$06,$56,$06,$28,$14,$15,$00
| |
− | dc.b $3D,$00,$02,$01,$01,$4C,$50,$0F,$12,$0C,$00,$02
| |
− | dc.b $05,$01,$00,$00,$00,$28,$2A,$29,$19,$1A,$06,$00,$00
| |
− | dc.b $2C,$71,$31,$71,$31,$1F,$1F,$16,$16,$00,$00,$0F
| |
− | dc.b $0F,$00,$00,$0F,$0F,$00,$00,$FA,$FA,$15,$14,$00,$00
| |
− | dc.b $18,$37,$31,$32,$31,$9E,$1C,$DC,$9C,$0D,$04,$06
| |
− | dc.b $01,$08,$03,$0A,$05,$B6,$36,$B6,$28,$2C,$14,$22,$00
| |
− | dc.b $3D,$01,$02,$02,$02,$10,$50,$50,$50,$07,$08,$08
| |
− | dc.b $08,$01,$00,$00,$00,$24,$18,$18,$18,$1C,$82,$82,$82
| |
− | dc.b $32,$71,$33,$0D,$01,$5F,$5F,$99,$94,$05,$05,$05
| |
− | dc.b $07,$02,$02,$02,$02,$11,$11,$11,$72,$23,$26,$2D,$80
| |
− | dc.b $3A,$32,$52,$01,$31,$1F,$1F,$1F,$18,$01,$00,$1F
| |
− | dc.b $00,$00,$00,$0F,$00,$5A,$03,$0F,$1A,$3B,$4F,$30,$00
| |
− | dc.b $3C,$42,$32,$41,$41,$12,$12,$12,$12,$00,$00,$00
| |
− | dc.b $00,$00,$00,$00,$00,$06,$06,$08,$08,$24,$24,$08,$08
| |
− | dc.b $31,$34,$30,$35,$31,$DF,$9F,$DF,$9F,$0C,$0C,$07
| |
− | dc.b $09,$07,$07,$07,$08,$2F,$1F,$1F,$2F,$17,$14,$32,$80
| |
− | dc.b $3D,$01,$01,$01,$01,$10,$50,$50,$50,$07,$08,$08
| |
− | dc.b $08,$01,$00,$00,$00,$20,$1A,$1A,$1A,$19,$84,$84,$84
| |
− | dc.b $24,$70,$30,$74,$38,$12,$1F,$1F,$1F,$05,$05,$03
| |
− | dc.b $03,$05,$05,$03,$03,$36,$26,$2C,$2C,$0A,$06,$08,$08
| |
− | dc.b $3A,$01,$01,$01,$02,$8D,$07,$07,$52,$09,$00,$00
| |
− | dc.b $03,$01,$02,$02,$00,$5F,$0F,$0F,$2F,$18,$18,$22,$80
| |
− | dc.b $3A,$01,$01,$07,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E
| |
− | dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$18,$16,$4E,$80
| |
− | dc.b $3A,$03,$03,$08,$01,$8E,$8D,$8E,$53,$0E,$0E,$0E
| |
− | dc.b $03,$00,$00,$00,$00,$1F,$1F,$FF,$0F,$17,$20,$28,$80
| |
− | dc.b $20,$7A,$00,$31,$00,$9F,$DC,$D8,$DF,$10,$04,$0A
| |
− | dc.b $04,$0F,$08,$08,$08,$5F,$BF,$5F,$BF,$14,$17,$2B,$80
| |
− | dc.b $3A,$61,$51,$08,$02,$5D,$5D,$5D,$50,$04,$1F,$0F
| |
− | dc.b $1F,$00,$00,$00,$00,$1F,$0F,$5F,$0F,$22,$22,$1E,$80
| |
− | dc.b $02,$01,$02,$55,$04,$92,$8E,$8D,$54,$0D,$00,$0C
| |
− | dc.b $03,$00,$00,$00,$00,$FF,$0F,$2F,$5F,$16,$1D,$2A,$80
| |
− | dc.b $02,$75,$73,$71,$31,$1F,$96,$58,$9F,$01,$03,$1B
| |
− | dc.b $08,$01,$01,$04,$05,$FF,$3F,$2F,$2F,$24,$30,$29,$80
| |
− | dc.b $20,$66,$60,$65,$60,$DF,$9F,$DF,$1F,$00,$09,$06
| |
− | dc.b $0C,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$1C,$16,$3A,$80
| |
− | dc.b $0D,$32,$06,$08,$01,$1F,$19,$19,$19,$0A,$05,$05
| |
− | dc.b $05,$00,$02,$02,$02,$3F,$2F,$2F,$2F,$28,$86,$80,$8D
| |
− | dc.b $38,$3A,$11,$0A,$02,$D4,$50,$14,$0E,$05,$02,$08
| |
− | dc.b $88,$00,$00,$00,$00,$99,$09,$09,$1A,$2D,$19,$2C,$86
| |
− | dc.b $0D,$32,$02,$04,$01,$1F,$19,$19,$19,$0A,$05,$05
| |
− | dc.b $05,$00,$02,$02,$02,$3F,$2F,$2F,$2F,$28,$8B,$86,$93
| |
− | dc.b $3A,$20,$60,$23,$01,$1E,$1F,$1F,$1F,$0A,$0B,$0A
| |
− | dc.b $0A,$05,$0A,$07,$08,$A4,$96,$85,$78,$21,$28,$25,$00
| |
− | dc.b $3A,$32,$32,$56,$42,$8D,$15,$4F,$52,$06,$07,$08
| |
− | dc.b $04,$02,$00,$00,$00,$18,$28,$18,$28,$19,$2A,$20,$00
| |
− | dc.b $3A,$51,$51,$08,$02,$1E,$1E,$1E,$10,$1F,$1F,$1F
| |
− | dc.b $0F,$00,$00,$00,$02,$0F,$0F,$0F,$1F,$18,$22,$24,$81
| |
− | dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06
| |
− | dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$19,$13,$37,$80
| |
− | dc.b $3D,$01,$02,$02,$02,$14,$8C,$0E,$0E,$08,$02,$05
| |
− | dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$1A,$80,$80,$80
| |
− | ; end of Mus_Credits
| |
| | | |
− | ; ------------------------------------------------------------------------------------------
| + | ==Fixing the special sounds== |
− | ; Sound effect pointers
| + | Any time you update the sound driver, you need to change these sounds: |
− | ; ------------------------------------------------------------------------------------------
| + | <pre> |
− | ; WARNING the sound driver treats certain sounds specially
| + | ; Special sound IDs |
− | ; going by the ID of the sound.
| |
− | ; SndID_Ring, SndID_RingLeft, SndID_Gloop, SndID_SpindashRev | |
− | ; are referenced by the sound driver directly.
| |
− | ; If needed you can change this in s2.sounddriver.asm
| |
| | | |
| + | MusID_StopSFX = $78+$80 ; F8 |
| + | MusID_FadeOut = $79+$80 ; F9 |
| + | SndID_SegaSound = $7A+$80 ; FA |
| + | MusID_SpeedUp = $7B+$80 ; FB |
| + | MusID_SlowDown = $7C+$80 ; FC |
| + | MusID_Stop = $7D+$80 ; FD |
| + | MusID_Pause = $7E+$80 ; FE |
| + | MusID_Unpause = $7F+$80 ; FF |
| + | </pre> |
| + | First of all, speed up and slow down are no longer sounds, they are called by a completely different routine, but new equates for those are still useful. Second, pause and unpause are no longer sounds but are directly handled by the '''PauseGame''' routine that we upgraded above. No equates are necessary for those two. StopSFX is not used in the Sonic 3 driver as far as I know, so we will treat it as a compatibility ID. The resulting lists will look like THIS: |
| + | <pre> |
| + | ; Special sound IDs |
| | | |
− | ; NOTE: the exact order of this list determines the priority of each sound, since it determines the sound's SndID.
| + | MusID_FadeOut = $E1 |
− | ; a sound can get dropped if a higher-priority sound is already playing.
| + | MusID_Stop = $E0 |
− | ; the rules for sound priority are currently unknown, but you can generally swap pointer lines around to resolve priority conflicts.
| + | SndID_SegaSound = $FF |
− | ; loc_FEE91: SoundPoint:
| |
− | SoundIndex:
| |
− | SndPtr_Jump: rom_ptr_z80 Sound20 ; jumping sound
| |
− | SndPtr_Checkpoint: rom_ptr_z80 Sound21 ; checkpoint ding-dong sound
| |
− | SndPtr_SpikeSwitch: rom_ptr_z80 Sound22 ; spike switch sound
| |
− | SndPtr_Hurt: rom_ptr_z80 Sound23 ; hurt sound
| |
− | SndPtr_Skidding: rom_ptr_z80 Sound24 ; skidding sound
| |
− | SndPtr_BlockPush: rom_ptr_z80 Sound25 ; block push sound
| |
− | SndPtr_HurtBySpikes: rom_ptr_z80 Sound26 ; spiky impalement sound
| |
− | SndPtr_Sparkle: rom_ptr_z80 Sound27 ; sparkling sound
| |
− | SndPtr_Beep: rom_ptr_z80 Sound28 ; short beep
| |
− | SndPtr_Bwoop: rom_ptr_z80 Sound29 ; bwoop
| |
− | SndPtr_Splash: rom_ptr_z80 Sound2A ; splash sound
| |
− | SndPtr_Swish: rom_ptr_z80 Sound2B ; swish
| |
− | SndPtr_BossHit: rom_ptr_z80 Sound2C ; boss hit
| |
− | SndPtr_InhalingBubble: rom_ptr_z80 Sound2D ; inhaling a bubble
| |
− | SndPtr_ArrowFiring:
| |
− | SndPtr_LavaBall: rom_ptr_z80 Sound2E ; arrow firing
| |
− | SndPtr_Shield: rom_ptr_z80 Sound2F ; shield sound
| |
− | SndPtr_LaserBeam: rom_ptr_z80 Sound30 ; laser beam
| |
− | SndPtr_Zap: rom_ptr_z80 Sound31 ; zap
| |
− | SndPtr_Drown: rom_ptr_z80 Sound32 ; drownage
| |
− | SndPtr_FireBurn: rom_ptr_z80 Sound33 ; fire + burn
| |
− | SndPtr_Bumper: rom_ptr_z80 Sound34 ; bumper bing
| |
− | SndPtr_Ring:
| |
− | SndPtr_RingRight: rom_ptr_z80 Sound35 ; ring sound
| |
− | SndPtr_SpikesMove: rom_ptr_z80 Sound36
| |
− | SndPtr_Rumbling: rom_ptr_z80 Sound37 ; rumbling
| |
− | rom_ptr_z80 Sound38
| |
− | SndPtr_Smash: rom_ptr_z80 Sound39 ; smash/breaking
| |
− | rom_ptr_z80 Sound3A ; nondescript ding
| |
− | SndPtr_DoorSlam: rom_ptr_z80 Sound3B ; door slamming shut
| |
− | SndPtr_SpindashRelease: rom_ptr_z80 Sound3C ; spindash unleashed
| |
− | SndPtr_Hammer: rom_ptr_z80 Sound3D ; slide-thunk
| |
− | SndPtr_Roll: rom_ptr_z80 Sound3E ; rolling sound
| |
− | SndPtr_ContinueJingle: rom_ptr_z80 Sound3F ; got continue
| |
− | SndPtr_CasinoBonus: rom_ptr_z80 Sound40 ; short bonus ding
| |
− | SndPtr_Explosion: rom_ptr_z80 Sound41 ; badnik bust
| |
− | SndPtr_WaterWarning: rom_ptr_z80 Sound42 ; warning ding-ding
| |
− | SndPtr_EnterGiantRing: rom_ptr_z80 Sound43 ; special stage ring flash (unused)
| |
− | SndPtr_BossExplosion: rom_ptr_z80 Sound44 ; thunk
| |
− | SndPtr_TallyEnd: rom_ptr_z80 Sound45 ; cha-ching
| |
− | SndPtr_RingSpill: rom_ptr_z80 Sound46 ; losing rings
| |
− | rom_ptr_z80 Sound47 ; chain pull chink-chink
| |
− | SndPtr_Flamethrower: rom_ptr_z80 Sound48 ; flamethrower
| |
− | SndPtr_Bonus: rom_ptr_z80 Sound49 ; bonus pwoieeew (unused)
| |
− | SndPtr_SpecStageEntry: rom_ptr_z80 Sound4A ; special stage entry
| |
− | SndPtr_SlowSmash: rom_ptr_z80 Sound4B ; slower smash/crumble
| |
− | SndPtr_Spring: rom_ptr_z80 Sound4C ; spring boing
| |
− | SndPtr_Blip: rom_ptr_z80 Sound4D ; selection blip
| |
− | SndPtr_RingLeft: rom_ptr_z80 Sound4E ; another ring sound (only plays in the left speaker?)
| |
− | SndPtr_Signpost: rom_ptr_z80 Sound4F ; signpost spin sound
| |
− | SndPtr_CNZBossZap: rom_ptr_z80 Sound50 ; mosquito zapper
| |
− | rom_ptr_z80 Sound51
| |
− | rom_ptr_z80 Sound52
| |
− | SndPtr_Signpost2P: rom_ptr_z80 Sound53
| |
− | SndPtr_OOZLidPop: rom_ptr_z80 Sound54 ; OOZ lid pop sound
| |
− | SndPtr_SlidingSpike: rom_ptr_z80 Sound55
| |
− | SndPtr_CNZElevator: rom_ptr_z80 Sound56
| |
− | SndPtr_PlatformKnock: rom_ptr_z80 Sound57
| |
− | SndPtr_BonusBumper: rom_ptr_z80 Sound58 ; CNZ bonusy bumper sound
| |
− | SndPtr_LargeBumper: rom_ptr_z80 Sound59 ; CNZ baaang bumper sound
| |
− | SndPtr_Gloop: rom_ptr_z80 Sound5A ; CNZ gloop / water droplet sound
| |
− | SndPtr_PreArrowFiring: rom_ptr_z80 Sound5B
| |
− | SndPtr_Fire: rom_ptr_z80 Sound5C
| |
− | SndPtr_ArrowStick: rom_ptr_z80 Sound5D ; chain clink
| |
− | SndPtr_Helicopter:
| |
− | SndPtr_WingFortress: rom_ptr_z80 Sound5E ; helicopter
| |
− | SndPtr_SuperTransform: rom_ptr_z80 Sound5F
| |
− | SndPtr_SpindashRev: rom_ptr_z80 Sound60 ; spindash charge
| |
− | SndPtr_Rumbling2: rom_ptr_z80 Sound61 ; rumbling
| |
− | SndPtr_CNZLaunch: rom_ptr_z80 Sound62
| |
− | SndPtr_Flipper: rom_ptr_z80 Sound63 ; CNZ blooing bumper
| |
− | SndPtr_HTZLiftClick: rom_ptr_z80 Sound64 ; HTZ track click sound
| |
− | SndPtr_Leaves: rom_ptr_z80 Sound65 ; kicking up leaves sound
| |
− | SndPtr_MegaMackDrop: rom_ptr_z80 Sound66 ; leaf splash?
| |
− | SndPtr_DrawbridgeMove: rom_ptr_z80 Sound67
| |
− | SndPtr_QuickDoorSlam: rom_ptr_z80 Sound68 ; door slamming quickly (seems unused)
| |
− | SndPtr_DrawbridgeDown: rom_ptr_z80 Sound69
| |
− | SndPtr_LaserBurst: rom_ptr_z80 Sound6A ; robotic laser burst
| |
− | SndPtr_Scatter:
| |
− | SndPtr_LaserFloor: rom_ptr_z80 Sound6B ; scatter
| |
− | SndPtr_Teleport: rom_ptr_z80 Sound6C
| |
− | SndPtr_Error: rom_ptr_z80 Sound6D ; error sound
| |
− | SndPtr_MechaSonicBuzz: rom_ptr_z80 Sound6E ; silver sonic buzz saw
| |
− | SndPtr_LargeLaser: rom_ptr_z80 Sound6F
| |
− | SndPtr_OilSlide: rom_ptr_z80 Sound70
| |
− | SndPtr__End:
| |
| | | |
− | ; There are many non-relative pointers in these sound effects,
| + | ;these are here for compatibility |
− | ; so the sounds shouldn't simply be BINCLUDE'd.
| + | MusID_StopSFX = MusID_Stop |
− | ; They could be included as separate .asm files using "include" instead of "binclude", | |
− | ; but I wanted to minimize the number of included asm files.
| |
| | | |
− | ; some comments on what the various script commands do (after the header):
| + | ;Tempo IDs |
− | ; 0x00-0x7F sets the note duration (of the previous note and following notes) | + | Tempo_SpeedUp = 8 |
− | ; 0x81-0xDF plays a note (the valid range may be smaller for PSG or DAC)
| + | Tempo_SlowDown = 0 |
− | ; 0x80 plays silence
| + | </pre> |
− | ; 0xE0-0xFF does special things. I won't list them here... search for "Coordination flags" sonic 2.
| |
| | | |
− | ; the FM voices (poorly named "ssamp" or "samples" below) | + | ==Fixing the Sneakers== |
− | ; are 25 bytes each and go directly to YM2612 registers. | + | I bet you expected that the sneakers would be fixed with the previous section, but no, Sonic 3 uses a different routine for the sneaker speed up / slow down. |
− | ; they can be hard to edit (there's an art to it) | + | First, we will go to '''super_shoes_Tails''' and, beyond the +, we'll find this: |
− | ; but search for sonic "Voice editing" for more info if you want to try. | + | <pre> |
| + | move.w #MusID_SpeedUp,d0 |
| + | jmp (PlayMusic).l ; Speed up tempo |
| + | </pre> |
| + | That will not work the way we want it to. It will actually cause an error during assembly of the ROM, so we need to fix it: |
| + | <pre> |
| + | move.w #Tempo_SpeedUp,d0 |
| + | jmp (SetTempo).l ; Speed up tempo |
| + | </pre> |
| + | The music now speeds up, but we need it to slow down when the sneakers wear off, so find: |
| + | <pre> |
| + | ; loc_1A14A: |
| + | Obj01_RmvSpeed: |
| + | bclr #2,status_secondary(a0) |
| + | move.w #MusID_SlowDown,d0 ; Slow down tempo |
| + | jmp (PlayMusic).l |
| + | </pre> |
| + | There are 2 lines that need editing here, just as before. |
| + | <pre> |
| + | ; loc_1A14A: |
| + | Obj01_RmvSpeed: |
| + | bclr #2,status_secondary(a0) |
| + | move.w #Tempo_SlowDown,d0 ; Slow down tempo |
| + | jmp (SetTempo).l |
| + | </pre> |
| + | This will fix it for Sonic, but for Tails, do the exact same thing to '''Obj02_ChkShoes'''. Now the sneakers should be working as intended. |
| + | ==Optional: Apply New Sounds to Existing Objects== |
| + | ''(coming soon)'' |
| | | |
− | ; jumping sound
| + | ==Optional: Fix the 2P VS Screen== |
− | Sound20: dc.w $0000,$0101
| + | You will probably notice that the 2 player mode level select is still playing the same music as the options screen, but sonic 3 has its own 2 player mode music. Here we will fix that. locate this code: |
− | dc.w $8080,z80_ptr(+),$F400
| + | <pre> |
− | + dc.b $F5,$00,$9E,$05,$F0,$02,$01,$F8,$65,$A3,$15,$F2
| + | move.b #MusID_Options,d0 |
| + | bsr.w JmpTo_PlayMusic |
| + | move.w #$707,(Demo_Time_left).w |
| + | clr.w (Two_player_mode).w |
| + | clr.l (Camera_X_pos).w |
| + | clr.l (Camera_Y_pos).w |
| + | move.b #$16,(Vint_routine).w |
| + | bsr.w WaitForVint |
| + | move.w (VDP_Reg1_val).w,d0 |
| + | ori.b #$40,d0 |
| + | move.w d0,(VDP_control_port).l |
| + | bsr.w Pal_FadeFromBlack |
| | | |
− | ; checkpoint ding-dong sound | + | ;loc_8DA8: |
− | Sound21: dc.w z80_ptr(ssamp21),$0101
| + | LevelSelect2P_Main: |
− | dc.w $8005,z80_ptr(+),$0001
| + | </pre> |
− | ssamp21: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11
| + | and change the music id to '''MusID_2PVS'''.<br> |
− | dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$17,$20,$80,$80
| + | the result should be: |
− | + dc.b $EF,$00,$BD,$06,$BA,$16,$F2
| + | <pre> |
| + | move.b #MusID_2PVS,d0 |
| + | bsr.w JmpTo_PlayMusic |
| + | move.w #$707,(Demo_Time_left).w |
| + | clr.w (Two_player_mode).w |
| + | clr.l (Camera_X_pos).w |
| + | clr.l (Camera_Y_pos).w |
| + | move.b #$16,(Vint_routine).w |
| + | bsr.w WaitForVint |
| + | move.w (VDP_Reg1_val).w,d0 |
| + | ori.b #$40,d0 |
| + | move.w d0,(VDP_control_port).l |
| + | bsr.w Pal_FadeFromBlack |
| | | |
− | ; spike switch sound | + | ;loc_8DA8: |
− | Sound22: dc.w $0000,$0101
| + | LevelSelect2P_Main: |
− | dc.w $80C0,z80_ptr(+),$0000
| + | </pre> |
− | + dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$C0,$04,$CA,$04
| |
− | - dc.b $C0,$01,$EC
| |
− | dc.w $01F7,$0006,z80_ptr(-)
| |
− | dc.b $F2
| |
| | | |
− | ; hurt sound
| + | ==Optional: Fix the Sound Test== |
− | Sound23: dc.w z80_ptr(ssamp23),$0101
| + | Okay, I assume that you would want the sound test working too, so I added a section on that. First, we want to go to '''OptionScreen_Choices'''. |
− | dc.w $8005,z80_ptr(+),$F400
| + | Here is what we have: |
− | + dc.b $EF,$00,$B0,$07,$E7,$AD
| + | <pre> |
− | - dc.b $01,$E6
| + | OptionScreen_Choices: |
− | dc.w $01F7,$002F,z80_ptr(-)
| + | dc.l (3-1)<<24|(Player_option&$FFFFFF) |
− | dc.b $F2
| + | dc.l (2-1)<<24|(Two_player_items&$FFFFFF) |
− | ssamp23: dc.b $30,$30,$30,$30,$30,$9E,$DC,$D8,$DC,$0E,$04,$0A
| + | dc.l ($80-1)<<24|(Sound_test_sound&$FFFFFF) |
− | dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$14,$14,$3C,$80
| + | </pre> |
| + | change that last line to: |
| + | <pre> |
| + | OptionScreen_Choices: |
| + | dc.l ($FF)<<24|(Sound_test_sound&$FFFFFF) |
| + | </pre> |
| + | now we have a full range, but it is not fixed yet, so we will locate: |
| + | <pre> |
| + | move.w d2,(a1) |
| + | cmpi.b #2,(Options_menu_box).w |
| + | bne.s + ; rts |
| + | andi.w #button_B_mask|button_C_mask,d0 |
| + | beq.s + ; rts |
| + | move.w (Sound_test_sound).w,d0 |
| + | addi.w #$80,d0 |
| + | bsr.w JmpTo_PlayMusic |
| + | lea (level_select_cheat).l,a0 |
| + | lea (continues_cheat).l,a2 |
| + | lea (Level_select_flag).w,a1 |
| + | moveq #0,d2 ; flag to tell the routine to enable the continues cheat |
| + | bsr.w CheckCheats |
| | | |
− | ; skidding sound
| + | + |
− | Sound24: dc.w $0000,$0102 ; sound header... no sample and 2 script entries
| + | </pre> |
− | dc.w $80A0,z80_ptr(+),$F400 ; entry 1 header
| + | see that '''addi.w #$80,d0''' line? It needs to go. the result will be: |
− | dc.w $80C0,z80_ptr(++),$F400 ; entry 2 header
| + | <pre> |
− | + dc.b $F5,$00,$AF,$01,$80,$AF,$80,$03 ; script entry 1
| + | move.w d2,(a1) |
− | - dc.b $AF,$01,$80
| + | cmpi.b #2,(Options_menu_box).w |
− | dc.w $01F7,$000B,z80_ptr(-) ; loopback
| + | bne.s + ; rts |
− | dc.b $F2 ; script 1 end
| + | andi.w #button_B_mask|button_C_mask,d0 |
− | + dc.b $F5,$00,$80,$01,$AD,$80,$AD,$80,$03 ; script entry 2
| + | beq.s + ; rts |
− | - dc.b $AD,$01,$80
| + | move.w (Sound_test_sound).w,d0 |
− | dc.w $01F7,$000B,z80_ptr(-) ; loopback
| + | bsr.w JmpTo_PlayMusic |
− | dc.b $F2 ; script 2 end
| + | lea (level_select_cheat).l,a0 |
| + | lea (continues_cheat).l,a2 |
| + | lea (Level_select_flag).w,a1 |
| + | moveq #0,d2 ; flag to tell the routine to enable the continues cheat |
| + | bsr.w CheckCheats |
| | | |
− | ; block push sound | + | + |
− | Sound25: dc.w z80_ptr(ssamp25),$0101
| + | </pre> |
− | dc.w $8005,z80_ptr(+),$0000
| + | okay, that fixes the options screen, but not the level select. We will do that next. go to '''LevSelControls_CheckLR'''. Below I have shown the code: |
− | + dc.b $EF,$00,$80,$01,$8B,$0A,$80,$02,$F2
| + | <pre> |
− | ssamp25: dc.b $FA,$21,$10,$30,$32,$2F,$2F,$1F,$2F,$05,$09,$08
| + | ; loc_9522: |
− | dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$0F,$0E,$1A,$80
| + | LevSelControls_CheckLR: |
| + | cmpi.w #$15,(Level_select_zone).w ; are we in the sound test? |
| + | bne.s LevSelControls_SwitchSide ; no |
| + | move.w (Sound_test_sound).w,d0 |
| + | move.b (Ctrl_1_Press).w,d1 |
| + | btst #button_left,d1 |
| + | beq.s + |
| + | subq.b #1,d0 |
| + | bcc.s + |
| + | moveq #$7F,d0 |
| | | |
− | ; spiky impalement sound
| + | + |
− | Sound26: dc.w z80_ptr(ssamp26),$0101
| + | btst #button_right,d1 |
− | dc.w $8005,z80_ptr(+),$F200
| + | beq.s + |
− | + dc.b $EF,$00,$F0,$01,$01,$10,$FF,$CF,$05,$D7,$25,$F2
| + | addq.b #1,d0 |
− | ssamp26: dc.b $3B,$3C,$30,$39,$31,$DF,$1F,$1F,$DF,$04,$04,$05
| + | cmpi.w #$80,d0 |
− | dc.b $01,$04,$04,$04,$02,$FF,$1F,$0F,$AF,$29,$0F,$20,$80
| + | blo.s + |
| + | moveq #0,d0 |
| | | |
− | ; sparkling sound
| + | + |
− | Sound27: dc.w z80_ptr(ssamp27),$0101
| + | btst #button_A,d1 |
− | dc.w $8004,z80_ptr(+),$0C1C
| + | beq.s + |
− | + dc.b $EF,$00,$C1,$05,$C4,$05,$C9,$2B,$F2
| + | addi.b #$10,d0 |
− | ssamp27: dc.b $07,$73,$33,$33,$73,$0F,$19,$14,$1A,$0A,$0A,$0A
| + | andi.b #$7F,d0 |
− | dc.b $0A,$0A,$0A,$0A,$0A,$57,$57,$57,$57,$00,$00,$00,$00
| |
| | | |
− | ; short beep | + | + |
− | Sound28: dc.w $0000,$0101
| + | move.w d0,(Sound_test_sound).w |
− | dc.w $8080,z80_ptr(+),$E803
| + | andi.w #button_B_mask|button_C_mask,d1 |
− | + dc.b $F5,$04,$CB,$04,$F2
| + | beq.s + ; rts |
| + | move.w (Sound_test_sound).w,d0 |
| + | addi.w #$80,d0 |
| + | bsr.w JmpTo_PlayMusic |
| + | lea (debug_cheat).l,a0 |
| + | lea (super_sonic_cheat).l,a2 |
| + | lea (Debug_options_flag).w,a1 |
| + | moveq #1,d2 ; flag to tell the routine to enable the Super Sonic cheat |
| + | bsr.w CheckCheats |
| | | |
− | ; bwoop | + | + |
− | Sound29: dc.w $0000,$0101
| + | rts |
− | dc.w $80A0,z80_ptr(+),$0000
| + | </pre> |
− | + dc.b $F0,$01,$01,$E6,$35,$8E,$06,$F2 | + | First of all, it checks when you press left to see if the sound test value is -1, since the sound driver uses the whole byte for the sound ID, we don't want it to rest to 127 like it usually does. It is very likely clear what you need to change there. Next it checks when you press right if the value is 128, at that point we do not want it resetting to 0 for the same reason above, then there is that andi.b on the sound test value of 127 that caps the value at $7F, that needs to go. Also just before playing the sound, 128 is added to the sound test value, which we don't want, just in case you haven't figured it out, I outlined the changes below: |
| + | <pre> |
| + | ; loc_9522: |
| + | LevSelControls_CheckLR: |
| + | cmpi.w #$15,(Level_select_zone).w ; are we in the sound test? |
| + | bne.s LevSelControls_SwitchSide ; no |
| + | move.w (Sound_test_sound).w,d0 |
| + | move.b (Ctrl_1_Press).w,d1 |
| + | btst #button_left,d1 |
| + | beq.s + |
| + | subq.b #1,d0 |
| + | ;bcc.s + ;<-- remove this line |
| + | ;moveq #$7F,d0 ;<-- remove this line |
| | | |
− | ; splash sound
| + | + |
− | Sound2A: dc.w z80_ptr(ssamp2A),$0102
| + | btst #button_right,d1 |
− | dc.w $80C0,z80_ptr(+),$0000
| + | beq.s + |
− | dc.w $8005,z80_ptr(++),$0003
| + | addq.b #1,d0 |
− | + dc.b $F5,$00,$F3,$E7,$C2,$05,$C6,$05,$E7
| + | ;cmpi.w #$80,d0 ;<-- remove this line |
− | - dc.b $07,$EC,$01
| + | ;blo.s + ;<-- remove this line |
− | dc.w $E7F7,$000F,z80_ptr(-)
| + | ;moveq #0,d0 ;<-- remove this line |
− | dc.b $F2
| |
− | + dc.b $EF,$00,$A6,$14,$F2
| |
− | ssamp2A: dc.b $00,$00,$02,$03,$00,$D9,$1F,$DF,$1F,$12,$14,$11
| |
− | dc.b $0F,$0A,$0A,$00,$0D,$FF,$FF,$FF,$FF,$22,$27,$07,$80
| |
| | | |
− | ; swish
| + | + |
− | Sound2B: dc.w $0000,$0101
| + | btst #button_A,d1 |
− | dc.w $80C0,z80_ptr(+),$0000
| + | beq.s + |
− | + dc.b $F5,$00,$F3,$E7,$C6,$03,$80,$03,$C6,$01,$E7
| + | addi.b #$10,d0 |
− | - dc.b $01,$EC,$01
| + | ;andi.b #$7F,d0 ;<-- remove this line |
− | dc.w $E7F7,$0015,z80_ptr(-)
| |
− | dc.b $F2
| |
| | | |
− | ; boss hit
| + | + |
− | Sound2C: dc.w z80_ptr(smashsamp),$0101
| + | move.w d0,(Sound_test_sound).w |
− | dc.w $8005,z80_ptr(+),$0000
| + | andi.w #button_B_mask|button_C_mask,d1 |
− | + dc.b $EF,$00,$F0,$01,$01,$0C,$01
| + | beq.s + ; rts |
− | - dc.b $81,$0A,$E6
| + | move.w (Sound_test_sound).w,d0 |
− | dc.w $10F7,$0004,z80_ptr(-)
| + | ;addi.w #$80,d0 ;<-- remove this line |
− | dc.b $F2
| + | bsr.w JmpTo_PlayMusic |
− | smashsamp: dc.b $F9,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$09,$18
| + | lea (debug_cheat).l,a0 |
− | dc.b $02,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$0E,$04,$07,$80
| + | lea (super_sonic_cheat).l,a2 |
| + | lea (Debug_options_flag).w,a1 ; Also S1_hidden_credits_flag |
| + | moveq #1,d2 ; flag to tell the routine to enable the Super Sonic cheat |
| + | bsr.w CheckCheats |
| | | |
− | ; inhaling a bubble
| + | + |
− | Sound2D: dc.w z80_ptr(ssamp2D),$0101
| + | rts |
− | dc.w $8005,z80_ptr(+),$0E00
| + | </pre> |
− | + dc.b $EF,$00,$F0,$01,$01,$21,$6E,$A6,$07
| |
− | dc.b $80,$06,$F0,$01,$01,$44,$1E,$AD,$08,$F2
| |
− | ssamp2D: dc.b $35,$05,$08,$09,$07,$1E,$0D,$0D,$0E,$0C,$03,$15
| |
− | dc.b $06,$16,$09,$0E,$10,$2F,$1F,$2F,$1F,$15,$12,$12,$80
| |
− | | |
− | ; arrow firing
| |
− | Sound2E: dc.w z80_ptr(ssamp2E),$0102
| |
− | dc.w $8005,z80_ptr(+),$0000
| |
− | dc.w $80C0,z80_ptr(++),$0000
| |
− | + dc.b $EF,$00,$80,$01,$F0,$01,$01,$40,$48,$83,$06,$85,$02,$F2
| |
− | + dc.b $F5,$00,$80,$0B,$F3,$E7,$C6,$01,$E7
| |
− | - dc.b $02,$EC,$01
| |
− | dc.w $E7F7,$0010,z80_ptr(-)
| |
− | dc.b $F2
| |
− | ssamp2E: dc.b $FA,$02,$00,$03,$05,$12,$0F,$11,$13,$05,$09,$18
| |
− | dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$2F,$0E,$1A,$80
| |
− | | |
− | ; shield sound
| |
− | Sound2F: dc.w z80_ptr(ssamp2F),$0101
| |
− | dc.w $8005,z80_ptr(+),$0C00
| |
− | + dc.b $EF,$00,$80,$01,$A3,$05,$E7,$A4,$26,$F2
| |
− | ssamp2F: dc.b $30,$30,$30,$30,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A
| |
− | dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$04,$14,$2C,$80
| |
− | | |
− | ; laser beam
| |
− | Sound30: dc.w z80_ptr(ssamp30),$0101 ; sound header... a voice and 1 script entry
| |
− | dc.w $8005,z80_ptr(+),$FB05 ; script entry header
| |
− | + dc.b $EF,$00,$DF,$7F ; script start
| |
− | - dc.b $DF,$02,$E6 ; script continued
| |
− | dc.w $01F7,$001B,z80_ptr(-) ; loopback
| |
− | dc.b $F2 ; script end
| |
− | ssamp30: dc.b $83,$1F,$1F,$15,$1F,$1F,$1F,$1F,$1F,$00,$00,$00 ; voice
| |
− | dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$0B,$01,$16,$82 ; (fixed length)
| |
− | | |
− | ; zap
| |
− | Sound31: dc.w z80_ptr(ssamp31),$0101
| |
− | dc.w $8005,z80_ptr(+),$FB02
| |
− | + dc.b $EF,$00,$B3,$05,$80,$01,$B3,$09,$F2
| |
− | ssamp31: dc.b $83,$12,$13,$10,$1E,$1F,$1F,$1F,$1F,$00,$00,$00
| |
− | dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$05,$34,$10,$87
| |
− | | |
− | ; drownage
| |
− | Sound32: dc.w z80_ptr(ssamp32),$0102
| |
− | dc.w $8004,z80_ptr(++),$0C04
| |
− | dc.w $8005,z80_ptr(+),$0E02
| |
− | + dc.b $EF,$00,$F0,$01,$01,$83,$0C
| |
− | - dc.b $8A,$05,$05,$E6
| |
− | dc.w $03F7,$000A,z80_ptr(-)
| |
− | dc.b $F2
| |
− | + dc.b $80,$06,$EF,$00,$F0,$01,$01,$6F,$0E
| |
− | - dc.b $8D,$04,$05,$E6
| |
− | dc.w $03F7,$000A,z80_ptr(-)
| |
− | dc.b $F2
| |
− | ssamp32: dc.b $35,$14,$04,$1A,$09,$0E,$11,$10,$0E,$0C,$03,$15
| |
− | dc.b $06,$16,$09,$0E,$10,$2F,$4F,$2F,$4F,$2F,$12,$12,$80
| |
− | | |
− | ; fire + burn
| |
− | Sound33: dc.w z80_ptr(ssamp2E),$0102
| |
− | dc.w $8005,z80_ptr(+),$0000
| |
− | dc.w $80C0,z80_ptr(++),$0000
| |
− | + dc.b $EF,$00,$80,$01,$F0,$01,$01,$40,$48,$83,$06,$85,$02,$F2
| |
− | + dc.b $F5,$00,$80,$0B,$F3,$E7,$A7,$25,$E7
| |
− | - dc.b $02,$EC,$01
| |
− | dc.w $E7F7,$0010,z80_ptr(-)
| |
− | dc.b $F2
| |
− | | |
− | ; bumper bing
| |
− | Sound34: dc.w z80_ptr(ssamp34),$0103
| |
− | dc.w $8005,z80_ptr(+),$0000
| |
− | dc.w $8004,z80_ptr(++),$0000
| |
− | dc.w $8002,z80_ptr(+++),$0002
| |
− | + dc.b $EF,$00,$F6
| |
− | dc.w z80_ptr(Sound34_3)
| |
− | + dc.b $EF,$00,$E1,$07,$80,$01
| |
− | Sound34_3:
| |
− | dc.b $BA,$20,$F2
| |
− | + dc.b $EF,$01,$9A,$03,$F2
| |
− | ssamp34: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11
| |
− | dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$1F,$2B,$80,$80
| |
− | dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$12,$0C,$0C
| |
− | dc.b $0C,$12,$08,$08,$08,$1F,$5F,$5F,$5F,$07,$80,$80,$80
| |
− | | |
− | ; ring sound
| |
− | Sound35: dc.w z80_ptr(ringsamp),$0101
| |
− | dc.w $8005,z80_ptr(+),$0005
| |
− | + dc.b $EF,$00,$E0,$40,$C1,$05,$C4,$05,$C9,$1B,$F2
| |
− | | |
− | | |
− | Sound36: dc.w $0000,$0101
| |
− | dc.w $80C0,z80_ptr(+),$0000
| |
− | + dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$C1,$07
| |
− | - dc.b $D0,$01,$EC
| |
− | dc.w $01F7,$000C,z80_ptr(-)
| |
− | dc.b $F2
| |
− | | |
− | ; rumbling
| |
− | Sound37: dc.w z80_ptr(ssamp37),$0101
| |
− | dc.w $8005,z80_ptr(+),$0000
| |
− | + dc.b $EF,$00,$F0,$01,$01,$20,$08
| |
− | - dc.b $8B
| |
− | dc.w $0AF7,$0008,z80_ptr(-)
| |
− | - dc.b $8B,$10,$E6
| |
− | dc.w $03F7,$0009,z80_ptr(-)
| |
− | dc.b $F2
| |
− | ssamp37: dc.b $FA,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$09,$18
| |
− | dc.b $02,$06,$06,$0F,$02,$1F,$4F,$2F,$2F,$0F,$0E,$1A,$80
| |
− | | |
− | | |
− | Sound38: dc.w $0000,$0101
| |
− | dc.w $80C0,z80_ptr(+),$0000
| |
− | + dc.b $F0,$01,$01,$F0,$08,$F3,$E7,$B4,$08
| |
− | - dc.b $B0,$02,$EC
| |
− | dc.w $01F7,$0003,z80_ptr(-)
| |
− | dc.b $F2
| |
− | | |
− | ; smash/breaking
| |
− | Sound39: dc.w z80_ptr(smashsamp),$0104
| |
− | dc.w $8002,z80_ptr(+),$1000
| |
− | dc.w $8004,z80_ptr(+++),$0000
| |
− | dc.w $8005,z80_ptr(++),$1000
| |
− | dc.w $80C0,z80_ptr(s39s4),$0000
| |
− | + dc.b $E0,$40,$80,$02,$F6
| |
− | dc.w z80_ptr(++)
| |
− | + dc.b $E0,$80,$80,$01
| |
− | + dc.b $EF,$00,$F0,$03,$01,$20,$04
| |
− | - dc.b $81,$18,$E6
| |
− | dc.w $0AF7,$0006,z80_ptr(-)
| |
− | dc.b $F2
| |
− | s39s4: dc.b $F0,$01,$01,$0F,$05,$F3,$E7
| |
− | - dc.b $B0,$18,$E7,$EC
| |
− | dc.w $03F7,$0005,z80_ptr(-)
| |
− | dc.b $F2
| |
− | | |
− | ; nondescript ding
| |
− | Sound3A: dc.w z80_ptr(ssamp3A),$0101
| |
− | dc.w $8005,z80_ptr(+),$0007
| |
− | + dc.b $EF,$00,$AE,$08,$F2
| |
− | ssamp3A: dc.b $1C,$2E,$0F,$02,$02,$1F,$1F,$1F,$1F,$18,$14,$0F
| |
− | dc.b $0E,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$20,$1B,$80,$80
| |
− | | |
− | ; door slamming shut
| |
− | Sound3B: dc.w z80_ptr(ssamp3B),$0101
| |
− | dc.w $8005,z80_ptr(+),$F400
| |
− | + dc.b $EF,$00,$9B,$04,$80,$A0,$06,$F2
| |
− | ssamp3B: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16
| |
− | dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80
| |
− | | |
− | ; spindash unleashed
| |
− | Sound3C: dc.w z80_ptr(ssamp3C),$0102
| |
− | dc.w $8005,z80_ptr(+),$9000
| |
− | dc.w $80C0,z80_ptr(++),$0000
| |
− | + dc.b $EF,$00,$F0,$01,$01,$C5,$1A,$CD,$07,$F2
| |
− | + dc.b $F5,$07,$80,$07,$F0,$01,$02,$05,$FF,$F3,$E7,$BB,$4F,$F2
| |
− | ssamp3C: dc.b $FD,$09,$00,$03,$00,$1F,$1F,$1F,$1F,$10,$0C,$0C
| |
− | dc.b $0C,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$09,$92,$84,$8E
| |
− | | |
− | ; slide-thunk
| |
− | Sound3D: dc.w z80_ptr(ssamp3D),$0102
| |
− | dc.w $8005,z80_ptr(+),$100A
| |
− | dc.w $8004,z80_ptr(++),$0000
| |
− | + dc.b $EF,$00,$F0,$01,$01,$60,$01,$A7,$08,$F2
| |
− | + dc.b $80,$08,$EF,$01,$84,$22,$F2
| |
− | ssamp3D: dc.b $FA,$21,$19,$3A,$30,$1F,$1F,$1F,$1F,$05,$09,$18
| |
− | dc.b $02,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$0E,$04,$07,$80
| |
− | dc.b $FA,$31,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$05,$18
| |
− | dc.b $10,$0B,$10,$1F,$10,$1F,$1F,$2F,$2F,$0D,$01,$00,$80
| |
− | | |
− | ; rolling sound
| |
− | Sound3E: dc.w z80_ptr(ssamp3E),$0101
| |
− | dc.w $8004,z80_ptr(+),$0C05
| |
− | + dc.b $EF,$00,$80,$01,$F0,$03,$01,$09,$FF,$CA,$25,$F4
| |
− | - dc.b $E7,$E6,$01,$D0
| |
− | dc.w $02F7,$002A,z80_ptr(-)
| |
− | dc.b $F2
| |
− | ssamp3E: dc.b $3C,$00,$02,$44,$02,$1F,$1F,$1F,$15,$00,$00,$1F
| |
− | dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$0D,$28,$00,$00
| |
− | | |
− | ; got continue
| |
− | Sound3F: dc.w z80_ptr(ssamp3F),$0103
| |
− | dc.w $8002,z80_ptr(+),$F406
| |
− | dc.w $8004,z80_ptr(++),$F406
| |
− | dc.w $8005,z80_ptr(+++),$F406
| |
− | + dc.b $EF,$00,$C9,$07,$CD,$D0,$CB,$CE,$D2,$CD,$D0,$D4,$CE,$D2,$D5
| |
− | - dc.b $D0,$07,$D4,$D7,$E6
| |
− | dc.w $05F7,$0008,z80_ptr(-)
| |
− | dc.b $F2
| |
− | + dc.b $EF,$00,$E1,$01,$80,$07,$CD,$15,$CE,$D0,$D2
| |
− | - dc.b $D4,$15,$E6
| |
− | dc.w $05F7,$0008,z80_ptr(-)
| |
− | dc.b $F2
| |
− | + dc.b $EF,$00,$E1,$01,$C9,$15,$CB,$CD,$CE
| |
− | - dc.b $D0,$15,$E6
| |
− | dc.w $05F7,$0008,z80_ptr(-)
| |
− | dc.b $F2
| |
− | ssamp3F: dc.b $14,$25,$36,$33,$11,$1F,$1F,$1F,$1F,$15,$1C,$18
| |
− | dc.b $13,$0B,$0D,$08,$09,$0F,$8F,$9F,$0F,$24,$0A,$05,$80
| |
− | | |
− | ; short bonus ding
| |
− | Sound40: dc.w z80_ptr(ssamp3F),$0102
| |
− | dc.w $8005,z80_ptr(++),$0008
| |
− | dc.w $8004,z80_ptr(+),$0008
| |
− | + dc.b $E1,$03,$80,$02
| |
− | + dc.b $EF,$00,$C4,$16,$F2
| |
− | | |
− | ; badnik bust
| |
− | Sound41: dc.w z80_ptr(ssamp41),$0102
| |
− | dc.w $8005,z80_ptr(+),$0000
| |
− | dc.w $80C0,z80_ptr(++),$0002
| |
− | + dc.b $F0,$03,$01,$72,$0B,$EF,$00,$BA,$16,$F2
| |
− | + dc.b $F5,$01,$F3,$E7,$B0,$1B,$F2
| |
− | ssamp41: dc.b $3C,$0F,$03,$01,$01,$1F,$1F,$1F,$1F,$19,$19,$12
| |
− | dc.b $0E,$05,$00,$12,$0F,$0F,$FF,$7F,$FF,$00,$00,$80,$80
| |
− | | |
− | ; warning ding-ding
| |
− | Sound42: dc.w z80_ptr(ssamp3F),$0101
| |
− | dc.w $8005,z80_ptr(+),$0C08
| |
− | + dc.b $EF,$00,$BA,$08,$BA,$25,$F2
| |
− | | |
− | ; special stage ring flash (unused)
| |
− | Sound43: dc.w z80_ptr(ssamp43),$0102
| |
− | dc.w $8004,z80_ptr(+),$0C00
| |
− | dc.w $8005,z80_ptr(++),$0013
| |
− | + dc.b $EF,$01,$80,$01,$A2,$08,$EF,$00,$E7,$AD,$26,$F2
| |
− | + dc.b $EF,$02,$F0,$06,$01,$03,$FF,$80,$0A
| |
− | - dc.b $C3
| |
− | dc.w $06F7,$0005,z80_ptr(-)
| |
− | dc.b $C3,$17,$F2
| |
− | ssamp43: dc.b $30,$30,$34,$5C,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A
| |
− | dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$24,$04,$1C,$80
| |
− | dc.b $30,$30,$34,$5C,$30,$9E,$AC,$A8,$DC,$0E,$04,$0A
| |
− | dc.b $05,$08,$08,$08,$08,$BF,$BF,$BF,$BF,$24,$04,$2C,$80
| |
− | dc.b $04,$37,$77,$72,$49,$1F,$1F,$1F,$1F,$07,$07,$0A
| |
− | dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$13,$13,$81,$88
| |
− | | |
− | ; thunk
| |
− | Sound44: dc.w z80_ptr(ssamp44),$0101
| |
− | dc.w $8005,z80_ptr(+),$0000
| |
− | + dc.b $EF,$00,$8A,$22,$F2
| |
− | ssamp44: dc.b $FA,$21,$10,$30,$32,$1F,$1F,$1F,$1F,$05,$05,$18
| |
− | dc.b $10,$0B,$10,$1F,$10,$1F,$4F,$2F,$2F,$0D,$04,$07,$80
| |
− | | |
− | ; cha-ching
| |
− | Sound45: dc.w z80_ptr(ssamp45),$0103
| |
− | dc.w $8005,z80_ptr(+),$0000
| |
− | dc.w $8004,z80_ptr(++),$0000
| |
− | dc.w $80C0,z80_ptr(+++),$0000
| |
− | + dc.b $EF,$00,$8A,$08,$80,$02,$8A,$08,$F2
| |
− | + dc.b $EF,$01,$80,$12,$C6,$55,$F2
| |
− | + dc.b $F5,$02,$F3,$E7,$80,$02,$C2,$05,$C4,$04,$C2,$05,$C4,$04,$F2
| |
− | ssamp45: dc.b $3B,$03,$02,$02,$06,$18,$1A,$1A,$96,$17,$0A,$0E
| |
− | dc.b $10,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$00,$39,$28,$80
| |
− | ringsamp: dc.b $04,$37,$77,$72,$49,$1F,$1F,$1F,$1F,$07,$07,$0A
| |
− | dc.b $0D,$00,$00,$0B,$0B,$1F,$1F,$0F,$0F,$23,$23,$80,$80
| |
− | | |
− | ; losing rings (scatter)
| |
− | Sound46: dc.w z80_ptr(ringsamp),$0102
| |
− | dc.w $8004,z80_ptr(+),$0005
| |
− | dc.w $8005,z80_ptr(++),$0008
| |
− | + dc.b $EF,$00,$C6,$02,$05,$05,$05,$05,$05,$05,$3A,$F2
| |
− | + dc.b $EF,$00,$80,$02,$C4,$02,$05,$15,$02,$05,$32,$F2
| |
− | | |
− | ; chain pull chink-chink
| |
− | Sound47: dc.w z80_ptr(ssamp47),$0101
| |
− | dc.w $8005,z80_ptr(+),$0000
| |
− | + dc.b $EF,$00,$BE,$05,$80,$04,$BE,$04,$80,$04,$F2
| |
− | ssamp47: dc.b $28,$2F,$37,$5F,$2B,$1F,$1F,$1F,$1F,$15,$15,$15
| |
− | dc.b $13,$13,$0D,$0C,$10,$2F,$3F,$2F,$2F,$00,$1F,$10,$80
| |
− | | |
− | ; flamethrower
| |
− | Sound48: dc.w $0000,$0101
| |
− | dc.w $80C0,z80_ptr(+),$0000
| |
− | + dc.b $F5,$00,$F3,$E7,$A7,$25,$F2
| |
− | | |
− | ; bonus pwoieeew (unused)
| |
− | Sound49: dc.w z80_ptr(ssamp49),$0101
| |
− | dc.w $8005,z80_ptr(+),$0E00
| |
− | + dc.b $EF,$00,$F0,$01,$01,$33,$18,$B9,$1A,$F2
| |
− | ssamp49: dc.b $3B,$0A,$05,$31,$02,$5F,$5F,$5F,$5F,$04,$16,$14
| |
− | dc.b $0C,$00,$00,$04,$00,$1F,$D8,$6F,$FF,$03,$00,$25,$80
| |
− | | |
− | ; special stage entry
| |
− | Sound4A: dc.w z80_ptr(ssamp4A),$0101
| |
− | dc.w $8005,z80_ptr(+),$0002
| |
− | + dc.b $EF,$00,$F0,$01,$01,$5B,$02,$CC,$65,$F2
| |
− | ssamp4A: dc.b $20,$36,$30,$35,$31,$41,$3B,$49,$4B,$09,$09,$06
| |
− | dc.b $08,$01,$02,$03,$A9,$0F,$0F,$0F,$0F,$29,$23,$27,$80
| |
− | | |
− | ; slower smash/crumble
| |
− | Sound4B: dc.w z80_ptr(smashsamp),$0102
| |
− | dc.w $8005,z80_ptr(+),$0000
| |
− | dc.w $80C0,z80_ptr(++),$0000
| |
− | + dc.b $EF,$00,$F0,$03,$01,$20,$04
| |
− | - dc.b $81,$18,$E6
| |
− | dc.w $0AF7,$0006,z80_ptr(-)
| |
− | dc.b $F2
| |
− | + dc.b $F0,$01,$01,$0F,$05,$F3,$E7
| |
− | - dc.b $B0,$18,$E7,$EC
| |
− | dc.w $03F7,$0005,z80_ptr(-)
| |
− | dc.b $F2
| |
− | | |
− | ; spring boing
| |
− | Sound4C: dc.w z80_ptr(ssamp4C),$0101
| |
− | dc.w $8004,z80_ptr(+),$0002
| |
− | + dc.b $EF,$00,$80,$01,$F0,$03,$01,$5D,$0F,$B0,$0C,$F4
| |
− | - dc.b $E7,$E6,$02,$BD
| |
− | dc.w $02F7,$0019,z80_ptr(-)
| |
− | dc.b $F2
| |
− | ssamp4C: dc.b $20,$36,$30,$35,$31,$DF,$9F,$DF,$9F,$07,$09,$06
| |
− | dc.b $06,$07,$06,$06,$08,$2F,$1F,$1F,$FF,$16,$13,$30,$80
| |
− | | |
− | ; selection blip
| |
− | Sound4D: dc.w $0000,$0101
| |
− | dc.w $80C0,z80_ptr(+),$0000
| |
− | + dc.b $BB,$02,$F2
| |
− | | |
− | ; another ring sound (only plays in the left speaker?)
| |
− | Sound4E: dc.w z80_ptr(ringsamp),$0101
| |
− | dc.w $8004,z80_ptr(+),$0005
| |
− | + dc.b $EF,$00,$E0,$80,$C1,$04,$C4,$05,$C9,$1B,$F2
| |
− | | |
− | ; signpost spin sound
| |
− | Sound4F: dc.w z80_ptr(ssamp4F),$0102
| |
− | dc.w $8004,z80_ptr(+),$2703
| |
− | dc.w $8005,z80_ptr(++),$2700
| |
− | + dc.b $80,$04
| |
− | + dc.b $EF,$00
| |
− | - dc.b $B4,$05,$E6
| |
− | dc.w $02F7,$0015,z80_ptr(-)
| |
− | dc.b $F2
| |
− | ssamp4F: dc.b $F4,$06,$0F,$04,$0E,$1F,$1F,$1F,$1F,$00,$0B,$00
| |
− | dc.b $0B,$00,$05,$00,$08,$0F,$FF,$0F,$FF,$0C,$03,$8B,$80
| |
− | | |
− | ; mosquito zapper
| |
− | Sound50: dc.w z80_ptr(ssamp50),$0101
| |
− | dc.w $8005,z80_ptr(+),$F400
| |
− | + dc.b $EF,$00,$B3,$04,$80,$01
| |
− | - dc.b $B4,$04,$80
| |
− | dc.w $01F7,$0004,z80_ptr(-)
| |
− | dc.b $F2
| |
− | ssamp50: dc.b $83,$12,$13,$10,$1E,$1F,$1F,$1F,$1F,$00,$00,$00
| |
− | dc.b $00,$02,$02,$02,$02,$2F,$FF,$2F,$3F,$06,$34,$10,$87
| |
− | | |
− | | |
− | Sound51: dc.w z80_ptr(ssamp51),$0102
| |
− | dc.w $80C0,z80_ptr(+),$0001
| |
− | dc.w $8005,z80_ptr(++),$000B
| |
− | + dc.b $F5,$02,$F3,$E4,$B0,$04,$85,$02,$F2
| |
− | + dc.b $EF,$00,$E8,$04,$A5,$06,$F2
| |
− | ssamp51: dc.b $3C,$02,$01,$00,$01,$1F,$1F,$1F,$1F,$00,$19,$0E
| |
− | dc.b $10,$00,$00,$0C,$0F,$0F,$FF,$EF,$FF,$05,$00,$80,$80
| |
− | | |
− | | |
− | Sound52: dc.w z80_ptr(ssamp52),$0101
| |
− | dc.w $8005,z80_ptr(+),$0002
| |
− | + dc.b $F0,$01,$01,$2A,$07,$EF,$00
| |
− | - dc.b $A5,$03
| |
− | dc.w $E7F7,$0013,z80_ptr(-)
| |
− | - dc.b $A5,$03,$E7,$E6
| |
− | dc.w $02F7,$0013,z80_ptr(-)
| |
− | dc.b $F2
| |
− | ssamp52: dc.b $28,$21,$21,$21,$30,$1F,$1F,$1F,$1F,$00,$00,$00
| |
− | dc.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$29,$20,$29,$80
| |
− | | |
− | | |
− | Sound53: dc.w z80_ptr(ssamp53),$0101
| |
− | dc.w $8005,z80_ptr(+),$F503
| |
− | + dc.b $EF,$00,$F0,$01,$01,$46,$09,$A7,$14,$E7,$14,$E7,$E6,$04
| |
− | dc.b $14,$E7,$E6,$04,$14,$E7,$E6,$04,$0A,$E7,$E6,$04,$0A,$F2
| |
− | ssamp53: dc.b $07,$0A,$0C,$0C,$0C,$1F,$1F,$1F,$1F,$00,$00,$00
| |
− | dc.b $00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$2A,$0F,$0F,$80
| |
− | | |
− | ; OOZ lid pop sound
| |
− | Sound54: dc.w z80_ptr(ssamp54),$0102
| |
− | dc.w $8005,z80_ptr(+),$0000
| |
− | dc.w $80C0,z80_ptr(++),$0006
| |
− | + dc.b $EF,$00,$B6,$15,$F2
| |
− | + dc.b $F3,$E7,$F5,$04,$C6,$03,$E7,$C5,$E7
| |
− | dc.b $C4,$E7,$C3,$E7,$C2,$E7,$C1,$E7,$C0,$F2
| |
− | ssamp54: dc.b $07,$03,$02,$03,$00,$FF,$6F,$6F,$3F,$12,$14,$11
| |
− | dc.b $0E,$1A,$0A,$03,$0D,$FF,$FF,$FF,$FF,$03,$07,$07,$80
| |
− | | |
− | | |
− | Sound55: dc.w z80_ptr(ssamp55),$0101
| |
− | dc.w $8005,z80_ptr(+),$0000
| |
− | + dc.b $EF,$00,$AA,$07,$B6,$15,$F2
| |
− | ssamp55: dc.b $42,$20,$0E,$0F,$0F,$1F,$1F,$1F,$1F,$1F,$1F,$1F
| |
− | dc.b $1F,$0F,$0E,$0F,$0E,$0F,$0F,$0F,$0F,$2E,$80,$20,$80
| |
− | | |
− | | |
− | Sound56: dc.w z80_ptr(ssamp56),$0101
| |
− | dc.w $8005,z80_ptr(+),$100E
| |
− | + dc.b $EF,$00,$F0,$01,$01,$1E,$FF,$8F,$1C,$F4
| |
− | - dc.b $E7,$9A
| |
− | dc.w $05F7,$0009,z80_ptr(-)
| |
− | - dc.b $E7,$9A,$04,$E6,$02,$E7,$9A,$04,$E6
| |
− | dc.w $02F7,$0008,z80_ptr(-)
| |
− | dc.b $F2
| |
− | ssamp56: dc.b $0D,$06,$00,$00,$E5,$1F,$1F,$1F,$1F,$00,$00,$00
| |
− | dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$27,$80,$80,$80
| |
− | | |
− | | |
− | Sound57: dc.w z80_ptr(ssamp57),$0101
| |
− | dc.w $8005,z80_ptr(+),$0000
| |
− | + dc.b $EF,$00,$CA,$15,$F2
| |
− | ssamp57: dc.b $04,$09,$70,$00,$30,$1C,$1F,$DF,$1F,$15,$12,$0B
| |
− | dc.b $0F,$0C,$0D,$00,$0D,$07,$2F,$FA,$FA,$00,$29,$00,$00
| |
− | | |
− | ; CNZ bonusy bumper sound
| |
− | Sound58: dc.w z80_ptr(ssamp58),$0101
| |
− | dc.w $8005,z80_ptr(+),$0007
| |
− | + dc.b $EF,$00,$B3,$06,$B3,$15,$F2
| |
− | ssamp58: dc.b $3C,$05,$0A,$01,$01,$56,$5C,$5C,$5C,$0E,$11,$11
| |
− | dc.b $11,$09,$06,$0A,$0A,$4F,$3F,$3F,$3F,$17,$20,$80,$80
| |
− | | |
− | ; CNZ baaang bumper sound
| |
− | Sound59: dc.w z80_ptr(ssamp59),$0103
| |
− | dc.w $8004,z80_ptr(+),$0000
| |
− | dc.w $8002,z80_ptr(++),$0002
| |
− | dc.w $8005,z80_ptr(+++),$0000
| |
− | + dc.b $EF,$00,$E1,$0C,$B5,$14,$F2
| |
− | + dc.b $EF,$01,$9A,$03,$F2
| |
− | + dc.b $EF,$00,$B6,$14,$F2
| |
− | ssamp59: dc.b $32,$30,$30,$40,$70,$1F,$1F,$1F,$1F,$12,$0A,$01
| |
− | dc.b $0D,$00,$01,$01,$0C,$00,$23,$C3,$F6,$08,$07,$1C,$03
| |
− | dc.b $05,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$12,$0C,$0C
| |
− | dc.b $0C,$12,$08,$08,$08,$1F,$5F,$5F,$5F,$07,$80,$80,$80
| |
− | | |
− | ; CNZ gloop / water droplet sound
| |
− | Sound5A: dc.w z80_ptr(ssamp5A),$0101
| |
− | dc.w $8005,z80_ptr(+),$0000
| |
− | + dc.b $EF,$00,$F0,$01,$01,$7F,$F1,$AA,$0A,$F2
| |
− | ssamp5A: dc.b $47,$03,$02,$02,$04,$5F,$5F,$5F,$5F,$0E,$1A,$11
| |
− | dc.b $0A,$09,$0A,$0A,$0A,$4F,$3F,$3F,$3F,$7F,$80,$80,$A3
| |
− | | |
− | | |
− | Sound5B: dc.w z80_ptr(ssamp5B),$0101
| |
− | dc.w $8005,z80_ptr(+),$0000
| |
− | + dc.b $EF,$00,$80,$02,$A5,$01,$E7
| |
− | - dc.b $01,$E7,$E6
| |
− | dc.w $02F7,$0005,z80_ptr(-)
| |
− | dc.b $F2
| |
− | ssamp5B: dc.b $38,$0F,$0F,$0F,$0F,$1F,$1F,$1F,$0E,$00,$00,$00
| |
− | dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$1F,$00,$00,$00,$80
| |
− | | |
− | | |
− | Sound5C: dc.w z80_ptr(ssamp5C),$0102
| |
− | dc.w $8004,z80_ptr(+),$000E
| |
− | dc.w $80C0,z80_ptr(++),$0000
| |
− | + dc.b $EF,$00,$85,$40
| |
− | - dc.b $E7,$04,$E6
| |
− | dc.w $04F7,$000A,z80_ptr(-)
| |
− | dc.b $F2
| |
− | + dc.b $F5,$00,$F3,$E7,$A7,$40
| |
− | - dc.b $E7,$08,$E6
| |
− | dc.w $01F7,$0005,z80_ptr(-)
| |
− | dc.b $F2
| |
− | ssamp5C: dc.b $FA,$12,$01,$01,$01,$1F,$1F,$1F,$1F,$00,$00,$00
| |
− | dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$81,$8E,$14,$80
| |
− | | |
− | ; chain clink
| |
− | Sound5D: dc.w z80_ptr(ssamp5D),$0101
| |
− | dc.w $8005,z80_ptr(+),$0000
| |
− | + dc.b $EF,$00,$C0,$04,$F2
| |
− | ssamp5D: dc.b $28,$2F,$37,$5F,$2B,$1F,$1F,$1F,$1F,$15,$15,$15
| |
− | dc.b $13,$13,$0D,$0C,$10,$2F,$3F,$2F,$2F,$00,$1F,$10,$80
| |
− | | |
− | ; helicopter
| |
− | Sound5E: dc.w z80_ptr(ssamp5E),$0101
| |
− | dc.w $8002,z80_ptr(+),$1405
| |
− | + dc.b $EF,$00
| |
− | - dc.b $95,$02,$95
| |
− | dc.w $01F7,$0013,z80_ptr(-)
| |
− | - dc.b $95,$02,$95,$01,$E6
| |
− | dc.w $01F7,$001B,z80_ptr(-)
| |
− | dc.b $F2
| |
− | ssamp5E: dc.b $35,$30,$44,$40,$51,$1F,$1F,$1F,$1F,$10,$00,$13
| |
− | dc.b $15,$1F,$00,$1F,$1A,$7F,$0F,$7F,$5F,$02,$A8,$80,$80
| |
− | | |
− | | |
− | Sound5F: dc.w z80_ptr(ssamp5F),$0103
| |
− | dc.w $8005,z80_ptr(s5Fs1),$0000
| |
− | dc.w $80C0,z80_ptr(s5Fs2),$0000
| |
− | dc.w $80A0,z80_ptr(s5Fs3),$0000
| |
− | s5Fs1 dc.b $EF,$00,$F0,$01,$01,$C5,$1A,$CD,$07,$E6,$0A,$80
| |
− | dc.b $06,$EF,$01,$F0,$01,$01,$11,$FF,$A2,$28
| |
− | - dc.b $E7,$03,$E6
| |
− | dc.w $03F7,$0005,z80_ptr(-)
| |
− | dc.b $F2
| |
− | s5Fs2 dc.b $80,$07,$F0,$01,$02,$05,$FF,$F3,$E7,$BB,$1D
| |
− | - dc.b $E7,$07,$EC
| |
− | dc.w $01F7,$0010,z80_ptr(-)
| |
− | dc.b $F2
| |
− | s5Fs3 dc.b $80,$16,$F5,$03
| |
− | - dc.b $BF,$04,$C1,$C3,$EC,$01,$E9
| |
− | dc.w $FFF7,$0005,z80_ptr(-)
| |
− | - dc.b $BF,$04,$C1,$C3,$EC,$01,$E9
| |
− | dc.w $01F7,$0007,z80_ptr(-)
| |
− | dc.b $F2
| |
− | ssamp5F: dc.b $FD,$09,$00,$03,$00,$1F,$1F,$1F,$1F,$10,$0C,$0C
| |
− | dc.b $0C,$0B,$10,$1F,$05,$1F,$4F,$2F,$2F,$09,$92,$84,$8E
| |
− | dc.b $3A,$70,$30,$04,$01,$0F,$14,$19,$16,$08,$0A,$0B
| |
− | dc.b $05,$03,$03,$03,$05,$1F,$6F,$8F,$5F,$1F,$22,$1F,$80
| |
− | | |
− | ; spindash charge
| |
− | Sound60: dc.w z80_ptr(ssamp60),$0101
| |
− | dc.w $8005,z80_ptr(+),$FE00
| |
− | + dc.b $EF,$00,$F0,$00,$01,$20,$F6,$C4,$16,$E7,$F4,$D0,$18,$E7
| |
− | - dc.b $04,$E7,$E6
| |
− | dc.w $03F7,$0010,z80_ptr(-)
| |
− | dc.b $F2
| |
− | ssamp60: dc.b $34,$00,$03,$0C,$09,$9F,$8C,$8F,$95,$00,$00,$00
| |
− | dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$00,$1D,$00,$00
| |
− | | |
− | ; rumbling
| |
− | Sound61: dc.w z80_ptr(ssamp61),$0101
| |
− | dc.w $8004,z80_ptr(+),$0004
| |
− | + dc.b $80,$01,$EF,$00,$F0,$00,$01,$70,$06,$82,$06,$85,$08,$83
| |
− | dc.b $01,$82,$05,$86,$06,$89,$03,$82,$08,$88,$04,$82,$06,$E6
| |
− | dc.b $02,$85,$08,$E6,$02,$83,$01,$E6,$02,$82,$05,$E6,$02,$86
| |
− | dc.b $06,$E6,$02,$89,$03,$E6,$02,$82,$08,$E6,$02,$88,$04,$E6,$02,$F2
| |
− | ssamp61: dc.b $32,$30,$30,$50,$30,$1F,$0E,$19,$0E,$07,$12,$15
| |
− | dc.b $09,$0A,$09,$1D,$06,$E8,$03,$0A,$17,$07,$00,$00,$00
| |
− | | |
− | | |
− | Sound62: dc.w z80_ptr(ssamp62),$0101
| |
− | dc.w $8005,z80_ptr(+),$FF00
| |
− | + dc.b $EF,$00,$A6,$05,$F0,$01,$01,$E7,$40
| |
− | - dc.b $C4,$02,$E7,$E6
| |
− | dc.w $01F7,$0012,z80_ptr(-)
| |
− | dc.b $F2
| |
− | ssamp62: dc.b $34,$0C,$10,$73,$0C,$AF,$AC,$FF,$D5,$06,$00,$02
| |
− | dc.b $01,$02,$0A,$04,$08,$BF,$BF,$BF,$BF,$00,$08,$80,$80
| |
− | | |
− | ; CNZ blooing bumper
| |
− | Sound63: dc.w z80_ptr(ssamp63),$0101
| |
− | dc.w $8005,z80_ptr(+),$0907
| |
− | + dc.b $EF,$00,$F0,$01,$01,$04,$56,$92,$03,$9A,$25,$F2
| |
− | ssamp63: dc.b $3D,$12,$10,$77,$30,$5F,$5F,$5F,$5F,$0F,$0A,$00
| |
− | dc.b $01,$0A,$0A,$0D,$0D,$4F,$0F,$0F,$0F,$13,$80,$80,$80
| |
− | | |
− | ; HTZ track click sound
| |
− | Sound64: dc.w z80_ptr(ssamp64),$0101
| |
− | dc.w $8005,z80_ptr(+),$1100
| |
− | + dc.b $EF,$00,$C7,$02,$F2
| |
− | ssamp64: dc.b $24,$2A,$02,$05,$01,$1A,$1F,$10,$1F,$0F,$1F,$1F
| |
− | dc.b $1F,$0C,$0D,$11,$11,$0C,$09,$09,$0F,$0E,$04,$80,$80
| |
− | | |
− | ; kicking up leaves sound
| |
− | Sound65: dc.w z80_ptr(ssamp65),$0101
| |
− | dc.w $80C0,z80_ptr(+),$F800
| |
− | + dc.b $F5,$03,$F3,$E7,$CE,$03,$F5,$06,$CE,$04,$EC
| |
− | dc.b $02,$CE,$02,$F5,$03,$EC,$FE,$CE,$08,$CE,$18,$F2
| |
− | ssamp65: ; uhm... apparently they forgot to null out the pointer to here.
| |
− | ; luckily, sound 65 doesn't really use its sample
| |
− | | |
− | ; leaf splash?
| |
− | Sound66: dc.w z80_ptr(ssamp66),$0102
| |
− | dc.w $8005,z80_ptr(++),$EE08
| |
− | dc.w $80C0,z80_ptr(+),$0000
| |
− | + dc.b $F3,$E7,$F5,$09,$C6,$36,$F2
| |
− | + dc.b $EF,$00,$80,$01,$92,$02,$02,$02,$30,$F2
| |
− | ssamp66: dc.b $32,$33,$17,$34,$13,$0F,$0D,$1B,$17,$00,$04,$02
| |
− | dc.b $0B,$08,$00,$08,$09,$6F,$5F,$4F,$6F,$05,$00,$00,$80
| |
− | | |
− | | |
− | Sound67: dc.w z80_ptr(ssamp67),$0101
| |
− | dc.w $80C0,z80_ptr(+),$0000
| |
− | + dc.b $F5,$06,$F3,$E7,$90,$0A,$94,$0A,$98,$0A,$9C
| |
− | dc.b $0A,$A0,$0A,$A4,$08,$A8,$08,$AC,$08,$B0,$08,$F2
| |
− | ssamp67: ; another not-really-used sample (like Sound65)
| |
− | | |
− | ; door slamming quickly (seems unused)
| |
− | Sound68: dc.w z80_ptr(ssamp68),$0101
| |
− | dc.w $8005,z80_ptr(+),$F400
| |
− | + dc.b $EF,$00,$9B,$04,$A5,$06,$F2
| |
− | ssamp68: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16
| |
− | dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80
| |
− | | |
− | | |
− | Sound69: dc.w z80_ptr(ssamp69),$0102
| |
− | dc.w $8005,z80_ptr(+),$F400
| |
− | dc.w $80C0,z80_ptr(++),$0000
| |
− | + dc.b $EF,$00,$9B,$03,$A8,$06,$9E,$08,$F2
| |
− | + dc.b $F5,$04,$F3,$E7,$C6,$03,$C6,$06,$C6,$08,$F2
| |
− | ssamp69: dc.b $3C,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$0F,$16
| |
− | dc.b $0F,$00,$00,$00,$00,$0F,$FF,$AF,$FF,$00,$0A,$80,$80
| |
− | | |
− | ; robotic laser burst
| |
− | Sound6A: dc.w z80_ptr(ssamp6A),$0101
| |
− | dc.w $8005,z80_ptr(+),$0004
| |
− | + dc.b $EF,$00,$DF,$14,$E6,$18,$06,$F2
| |
− | ssamp6A: dc.b $3D,$09,$34,$34,$28,$1F,$16,$16,$16,$00,$00,$00
| |
− | dc.b $04,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$15,$02,$02,$00
| |
− | | |
− | ; scatter
| |
− | Sound6B: dc.w z80_ptr(ssamp6B),$0101
| |
− | dc.w $8004,z80_ptr(+),$0002
| |
− | + dc.b $EF,$00,$81,$04,$80,$0C,$F2
| |
− | ssamp6B: dc.b $3A,$30,$30,$40,$70,$1F,$1F,$1F,$1F,$12,$0A,$01
| |
− | dc.b $07,$00,$01,$01,$03,$00,$23,$C3,$46,$08,$07,$1C,$03
| |
− | | |
− | | |
− | Sound6C: dc.w z80_ptr(ssamp6C),$0104
| |
− | dc.w $8005,z80_ptr(++),$0010
| |
− | dc.w $8004,z80_ptr(+),$0010
| |
− | dc.w $80C0,z80_ptr(s5Fs2),$0000
| |
− | dc.w $80A0,z80_ptr(s5Fs3),$0000
| |
− | + dc.b $E1,$10
| |
− | + dc.b $EF,$01,$F0,$01,$01,$EC,$56,$C0,$24,$F4,$EF,$00,$E6,$F0
| |
− | - dc.b $BB,$02,$E7,$E6,$02,$E9
| |
− | dc.w $01F7,$0020,z80_ptr(-)
| |
− | dc.b $F2
| |
− | ssamp6C: dc.b $00,$53,$30,$03,$30,$1F,$1F,$1F,$1F,$00,$00,$00
| |
− | dc.b $00,$00,$00,$00,$00,$00,$00,$00,$0F,$0F,$06,$23,$80
| |
− | dc.b $3C,$72,$32,$32,$72,$14,$14,$0F,$0F,$00,$00,$00
| |
− | dc.b $00,$00,$00,$00,$00,$02,$02,$08,$08,$35,$14,$00,$00
| |
− | | |
− | ; error sound
| |
− | Sound6D: dc.w z80_ptr(ssamp6D),$0101
| |
− | dc.w $8005,z80_ptr(+),$0004
| |
− | + dc.b $EF,$00,$B0,$06,$80,$06,$B0,$18,$F2
| |
− | ssamp6D: dc.b $38,$00,$00,$00,$00,$1F,$1F,$1F,$1F,$00,$00,$00
| |
− | dc.b $00,$00,$00,$00,$00,$0F,$0F,$0F,$0F,$1F,$0C,$17,$00
| |
− | | |
− | ; silver sonic buzz saw
| |
− | Sound6E: dc.w z80_ptr(ssamp6E),$0102
| |
− | dc.w $8005,z80_ptr(+),$0000
| |
− | dc.w $80C0,z80_ptr(++),$0000
| |
− | + dc.b $EF,$00,$C6,$24,$E7
| |
− | - dc.b $C6,$04,$E7,$E6
| |
− | dc.w $04F7,$0008,z80_ptr(-)
| |
− | dc.b $F2
| |
− | + dc.b $F3,$E7,$C7,$44,$F2
| |
− | ssamp6E: dc.b $33,$00,$10,$00,$31,$1F,$1D,$1E,$0E,$00,$0C,$1D
| |
− | dc.b $00,$00,$00,$01,$00,$0F,$0F,$0F,$0F,$08,$06,$07,$80
| |
− | | |
− | | |
− | Sound6F: dc.w z80_ptr(ssamp6A),$0103
| |
− | dc.w $8005,z80_ptr(++),$000B
| |
− | dc.w $8004,z80_ptr(+),$0012
| |
− | dc.w $80C0,z80_ptr(+++),$0000
| |
− | + dc.b $E1,$02,$80,$02
| |
− | + dc.b $EF,$00,$E6,$0C,$DF,$06,$E7,$E6,$F4,$06,$E7
| |
− | dc.b $E6,$F4,$12,$E7,$E6,$0C,$06,$E7,$E6,$0C,$06,$F2
| |
− | + dc.b $F3,$E7,$C6,$04,$C0,$BA,$B4,$AE,$E6
| |
− | dc.b $01,$AE,$E6,$01,$AE,$E6,$01,$AE,$F2
| |
− | | |
− | | |
− | Sound70: dc.w $0000,$0101
| |
− | dc.w $80C0,z80_ptr(+),$0000
| |
− | + dc.b $F3,$E7,$C6,$18
| |
− | - dc.b $E7,$03,$E6
| |
− | dc.w $01F7,$0008,z80_ptr(-)
| |
− | dc.b $F2
| |
| | | |
| + | ===Note from WBilgini=== |
| | | |
− | if * > soundBankStart + $8000
| + | Alright, there is a chance when you compile, you'll a error about this line: |
− | fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to the other bank."
| |
− | else
| |
− | ;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."
| |
− | endif
| |
| | | |
− | ; end of 'ROM'
| |
− | if padToPowerOfTwo && (*)&(*-1)
| |
− | cnop -1,2<<lastbit(*-1)
| |
− | dc.b 0
| |
− | paddingSoFar := paddingSoFar+1
| |
− | else
| |
− | even
| |
− | endif
| |
− | if MOMPASS=2
| |
− | ; "About" because it will be off by the same amount that Size_of_Snd_driver_guess is incorrect (if you changed it), and because I may have missed a small amount of internal padding somewhere
| |
− | message "rom size is $\{*} bytes (\{*/1024.0} kb). About $\{paddingSoFar} bytes are padding. "
| |
− | endif
| |
| ; share these symbols externally (WARNING: don't rename, move or remove these labels!) | | ; share these symbols externally (WARNING: don't rename, move or remove these labels!) |
− | shared movewZ80CompSize | + | shared word_728C_user,Obj5F_MapUnc_7240,off_3A294,MapRUnc_Sonic,movewZ80CompSize |
− | </asm>
| |
− | | |
− | We want to replace it with this optimized code:
| |
− | <asm>
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (20 blocks)
| |
− | ; Buzzer's fireball
| |
− | ArtNem_Buzzer_Fireball: BINCLUDE "art/nemesis/Fireball 1 (Buzzer).bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (24 blocks)
| |
− | ; Waterfall tiles
| |
− | ArtNem_Waterfall: BINCLUDE "art/nemesis/Waterfall tiles.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (16 blocks)
| |
− | ; Another fireball
| |
− | ArtNem_HtzFireball: BINCLUDE "art/nemesis/Fireball 2.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (8 blocks)
| |
− | ; Bridge in EHZ
| |
− | ArtNem_EHZ_Bridge: BINCLUDE "art/nemesis/EHZ bridge.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (48 blocks)
| |
− | ; Diagonally moving lift in HTZ
| |
− | ArtNem_HtzZipline: BINCLUDE "art/nemesis/HTZ zip-line platform.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (4 blocks)
| |
− | ; One way barrier from HTZ
| |
− | ArtNem_HtzValveBarrier: BINCLUDE "art/nemesis/One way barrier from HTZ.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (24 blocks)
| |
− | ; See-saw in HTZ
| |
− | ArtNem_HtzSeeSaw: BINCLUDE "art/nemesis/See-saw in HTZ.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (24 blocks)
| |
− | ; Unused Fireball
| |
− | ;ArtNem_F0B06:
| |
− | BINCLUDE "art/nemesis/Fireball 3.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (20 blocks)
| |
− | ; Rock from HTZ
| |
− | ArtNem_HtzRock: BINCLUDE "art/nemesis/Rock from HTZ.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (4 blocks)
| |
− | ; Orbit badnik from HTZ ; ArtNem_HtzSol:
| |
− | ArtNem_Sol: BINCLUDE "art/nemesis/Sol badnik from HTZ.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (120 blocks)
| |
− | ; Large spinning wheel from MTZ
| |
− | ArtNem_MtzWheel: BINCLUDE "art/nemesis/Large spinning wheel from MTZ.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (9 blocks)
| |
− | ; Indent in large spinning wheel from MTZ
| |
− | ArtNem_MtzWheelIndent: BINCLUDE "art/nemesis/Large spinning wheel from MTZ - indent.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (8 blocks)
| |
− | ; Spike block from MTZ
| |
− | ArtNem_MtzSpikeBlock: BINCLUDE "art/nemesis/MTZ spike block.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (15 blocks)
| |
− | ; Steam from MTZ
| |
− | ArtNem_MtzSteam: BINCLUDE "art/nemesis/Steam from MTZ.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (8 blocks)
| |
− | ; Spike from MTZ
| |
− | ArtNem_MtzSpike: BINCLUDE "art/nemesis/Spike from MTZ.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (54 blocks)
| |
− | ; Similarly shaded blocks from MTZ
| |
− | ArtNem_MtzAsstBlocks: BINCLUDE "art/nemesis/Similarly shaded blocks from MTZ.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (9 blocks)
| |
− | ; Lava bubble from MTZ
| |
− | ArtNem_MtzLavaBubble: BINCLUDE "art/nemesis/Lava bubble from MTZ.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (4 blocks)
| |
− | ; Lava cup
| |
− | ArtNem_LavaCup: BINCLUDE "art/nemesis/Lava cup from MTZ.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (8 blocks)
| |
− | ; End of a bolt and rope from MTZ
| |
− | ArtNem_BoltEnd_Rope: BINCLUDE "art/nemesis/Bolt end and rope from MTZ.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (12 blocks)
| |
− | ; Small cog from MTZ
| |
− | ArtNem_MtzCog: BINCLUDE "art/nemesis/Small cog from MTZ.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (4 blocks)
| |
− | ; Unknown. Four blocks that are all the same colour from MTZ.
| |
− | ArtNem_MtzUnkBlocks: BINCLUDE "art/nemesis/Unknown MTZ sprite.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (32 blocks)
| |
− | ; Large wooden box from MCZ ; ArtNem_F187C:
| |
− | ArtNem_Crate: BINCLUDE "art/nemesis/Large wooden box from MCZ.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (26 blocks)
| |
− | ; Collapsing platform from MCZ ; ArtNem_F1ABA:
| |
− | ArtNem_MCZCollapsePlat: BINCLUDE "art/nemesis/Collapsing platform from MCZ.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (16 blocks)
| |
− | ; Switch that you pull on from MCZ ; ArtNem_F1C64:
| |
− | ArtNem_VineSwitch: BINCLUDE "art/nemesis/Pull switch from MCZ.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (10 blocks)
| |
− | ; Vine that lowers in MCZ ; ArtNem_F1D5C:
| |
− | ArtNem_VinePulley: BINCLUDE "art/nemesis/Vine that lowers from MCZ.bin"
| |
− | ; --------------------------------------------------------------------
| |
− | ; Nemesis compressed art (20 blocks)
| |
− | ; Log viewed from the end for folding gates in MCZ (start of MCZ2) ; ArtNem_F1E06:
| |
− | ArtNem_MCZGateLog: BINCLUDE "art/nemesis/Drawbridge logs from MCZ.bin"
| |
− | | |
− | ; ---------------------------------------------------------------------------
| |
− | ; Subroutine to load the sound driver
| |
− | ; ---------------------------------------------------------------------------
| |
− | ; sub_EC000:
| |
− | SoundDriverLoad:
| |
− | 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:
| + | Remove the movewZ80CompSize and you'll be good. |
− | move.b (a0)+,(a1)+
| |
− | dbf d0,UniversalVoiceBankLoadLoop
| |
− | lea (DriverResetData).l,a0
| |
− | lea ($A01C00).l,a1
| |
− | move.w #DriverResetDataEnd-DriverResetData,d0
| |
| | | |
− | DriverResetDataLoadLoop:
| + | Also, I noticed a bug. In the title screen, after you choose a option, for a second the sound will go earrape. I don't know how to fix this though. If you do, please edit this page to fix it! |
− | 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:
| |
− | | |
− | 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
| |
− | | |
− | MusicPointers:
| |
− | rom_ptr_z80 Angel_Island_1_Snd
| |
− | rom_ptr_z80 Angel_Island_2_Snd
| |
− | rom_ptr_z80 Hidrocity_1_Snd
| |
− | rom_ptr_z80 Hidrocity_2_Snd
| |
− | rom_ptr_z80 Marble_Garden_1_Snd
| |
− | rom_ptr_z80 Marble_Garden_2_Snd
| |
− | rom_ptr_z80 Carnival_Night_1_Snd
| |
− | rom_ptr_z80 Carnival_Night_2_Snd
| |
− | rom_ptr_z80 Flying_Battery_1_Snd
| |
− | rom_ptr_z80 Flying_Battery_2_Snd
| |
− | rom_ptr_z80 Icecap_1_Snd
| |
− | rom_ptr_z80 Icecap_2_Snd
| |
− | rom_ptr_z80 Launch_Base_1_Snd
| |
− | rom_ptr_z80 Launch_Base_2_Snd
| |
− | rom_ptr_z80 Mushroom_Hill_1_Snd
| |
− | rom_ptr_z80 Mushroom_Hill_2_Snd
| |
− | rom_ptr_z80 Sandopolis_1_Snd
| |
− | rom_ptr_z80 Sandopolis_2_Snd
| |
− | rom_ptr_z80 Lava_Reef_1_Snd
| |
− | rom_ptr_z80 Lava_Reef_2_Snd
| |
− | rom_ptr_z80 Sky_Sanctuary_Snd
| |
− | rom_ptr_z80 Death_Egg_1_Snd
| |
− | rom_ptr_z80 Death_Egg_2_Snd
| |
− | rom_ptr_z80 Mini_Boss_SK_Snd
| |
− | rom_ptr_z80 Boss_Snd
| |
− | rom_ptr_z80 The_Doomsday_Snd
| |
− | rom_ptr_z80 Glowing_Spheres_Bonus_Stage_snd
| |
− | rom_ptr_z80 Special_Stage_Snd
| |
− | rom_ptr_z80 Slot_Machine_Bonus_Stage_snd
| |
− | rom_ptr_z80 Gum_Ball_Machine_Bonus_Stage_snd
| |
− | rom_ptr_z80 Knuckles_Theme_Snd
| |
− | rom_ptr_z80 Azure_Lake_Snd
| |
− | rom_ptr_z80 Balloon_Park_Snd
| |
− | rom_ptr_z80 Desert_Palace_Snd
| |
− | rom_ptr_z80 Chrome_Gadget_Snd
| |
− | rom_ptr_z80 Endless_Mine_Snd
| |
− | rom_ptr_z80 Title_Screen_Snd
| |
− | rom_ptr_z80 Credits_Snd
| |
− | rom_ptr_z80 Time_Game_Over_Snd
| |
− | rom_ptr_z80 Continue_Snd
| |
− | rom_ptr_z80 Level_Results_Snd
| |
− | rom_ptr_z80 Extra_Life_Snd
| |
− | rom_ptr_z80 Emerald_Snd
| |
− | rom_ptr_z80 Invencibility_Snd
| |
− | rom_ptr_z80 Competition_Menu_Snd
| |
− | rom_ptr_z80 Mini_Boss_Snd
| |
− | rom_ptr_z80 Menu_Snd
| |
− | rom_ptr_z80 Final_Boss_Snd
| |
− | rom_ptr_z80 Underwater_Timming_Snd
| |
− | rom_ptr_z80 Presented_by_SEGA_Snd
| |
− | | |
− | SndPointers:
| |
− | rom_ptr_z80 Sfx_33_Snd
| |
− | rom_ptr_z80 Sfx_34_Snd
| |
− | rom_ptr_z80 Sfx_35_Snd
| |
− | rom_ptr_z80 Sfx_36_Snd
| |
− | rom_ptr_z80 Sfx_37_Snd
| |
− | rom_ptr_z80 Sfx_38_Snd
| |
− | rom_ptr_z80 Sfx_39_Snd
| |
− | rom_ptr_z80 Sfx_3A_Snd
| |
− | rom_ptr_z80 Sfx_3B_Snd
| |
− | rom_ptr_z80 Sfx_3C_Snd
| |
− | rom_ptr_z80 Sfx_3D_Snd
| |
− | rom_ptr_z80 Sfx_3E_Snd
| |
− | rom_ptr_z80 Sfx_3F_Snd
| |
− | rom_ptr_z80 Sfx_40_Snd
| |
− | rom_ptr_z80 Sfx_41_Snd
| |
− | rom_ptr_z80 Sfx_42_Snd
| |
− | rom_ptr_z80 Sfx_43_Snd
| |
− | rom_ptr_z80 Sfx_44_Snd
| |
− | rom_ptr_z80 Sfx_45_Snd
| |
− | rom_ptr_z80 Sfx_46_Snd
| |
− | rom_ptr_z80 Sfx_47_Snd
| |
− | rom_ptr_z80 Sfx_48_Snd
| |
− | rom_ptr_z80 Sfx_49_Snd
| |
− | rom_ptr_z80 Sfx_4A_Snd
| |
− | rom_ptr_z80 Sfx_4B_Snd
| |
− | rom_ptr_z80 Sfx_4C_Snd
| |
− | rom_ptr_z80 Sfx_4D_Snd
| |
− | rom_ptr_z80 Sfx_4E_Snd
| |
− | rom_ptr_z80 Sfx_4F_Snd
| |
− | rom_ptr_z80 Sfx_50_Snd
| |
− | rom_ptr_z80 Sfx_51_Snd
| |
− | rom_ptr_z80 Sfx_52_Snd
| |
− | rom_ptr_z80 Sfx_53_Snd
| |
− | rom_ptr_z80 Sfx_54_Snd
| |
− | rom_ptr_z80 Sfx_55_Snd
| |
− | rom_ptr_z80 Sfx_56_Snd
| |
− | rom_ptr_z80 Sfx_57_Snd
| |
− | rom_ptr_z80 Sfx_58_Snd
| |
− | rom_ptr_z80 Sfx_59_Snd
| |
− | rom_ptr_z80 Sfx_5A_Snd
| |
− | rom_ptr_z80 Sfx_5B_Snd
| |
− | rom_ptr_z80 Sfx_5C_Snd
| |
− | rom_ptr_z80 Sfx_5D_Snd
| |
− | rom_ptr_z80 Sfx_5E_Snd
| |
− | rom_ptr_z80 Sfx_5F_Snd
| |
− | rom_ptr_z80 Sfx_60_Snd
| |
− | rom_ptr_z80 Sfx_61_Snd
| |
− | rom_ptr_z80 Sfx_62_Snd
| |
− | rom_ptr_z80 Sfx_63_Snd
| |
− | rom_ptr_z80 Sfx_64_Snd
| |
− | rom_ptr_z80 Sfx_65_Snd
| |
− | rom_ptr_z80 Sfx_66_Snd
| |
− | rom_ptr_z80 Sfx_67_Snd
| |
− | rom_ptr_z80 Sfx_68_Snd
| |
− | rom_ptr_z80 Sfx_69_Snd
| |
− | rom_ptr_z80 Sfx_6A_Snd
| |
− | rom_ptr_z80 Sfx_6B_Snd
| |
− | rom_ptr_z80 Sfx_6C_Snd
| |
− | rom_ptr_z80 Sfx_6D_Snd
| |
− | rom_ptr_z80 Sfx_6E_Snd
| |
− | rom_ptr_z80 Sfx_6F_Snd
| |
− | rom_ptr_z80 Sfx_70_Snd
| |
− | rom_ptr_z80 Sfx_71_Snd
| |
− | rom_ptr_z80 Sfx_72_Snd
| |
− | rom_ptr_z80 Sfx_73_Snd
| |
− | rom_ptr_z80 Sfx_74_Snd
| |
− | rom_ptr_z80 Sfx_75_Snd
| |
− | rom_ptr_z80 Sfx_76_Snd
| |
− | rom_ptr_z80 Sfx_77_Snd
| |
− | rom_ptr_z80 Sfx_78_Snd
| |
− | rom_ptr_z80 Sfx_79_Snd
| |
− | rom_ptr_z80 Sfx_7A_Snd
| |
− | rom_ptr_z80 Sfx_7B_Snd
| |
− | rom_ptr_z80 Sfx_7C_Snd
| |
− | rom_ptr_z80 Sfx_7D_Snd
| |
− | rom_ptr_z80 Sfx_7E_Snd
| |
− | rom_ptr_z80 Sfx_7F_Snd
| |
− | rom_ptr_z80 Sfx_80_Snd
| |
− | rom_ptr_z80 Sfx_81_Snd
| |
− | rom_ptr_z80 Sfx_82_Snd
| |
− | rom_ptr_z80 Sfx_83_Snd
| |
− | rom_ptr_z80 Sfx_84_Snd
| |
− | rom_ptr_z80 Sfx_85_Snd
| |
− | rom_ptr_z80 Sfx_86_Snd
| |
− | rom_ptr_z80 Sfx_87_Snd
| |
− | rom_ptr_z80 Sfx_88_Snd
| |
− | rom_ptr_z80 Sfx_89_Snd
| |
− | rom_ptr_z80 Sfx_8A_Snd
| |
− | rom_ptr_z80 Sfx_8B_Snd
| |
− | rom_ptr_z80 Sfx_8C_Snd
| |
− | rom_ptr_z80 Sfx_8D_Snd
| |
− | rom_ptr_z80 Sfx_8E_Snd
| |
− | rom_ptr_z80 Sfx_8F_Snd
| |
− | rom_ptr_z80 Sfx_90_Snd
| |
− | rom_ptr_z80 Sfx_91_Snd
| |
− | rom_ptr_z80 Sfx_92_Snd
| |
− | rom_ptr_z80 Sfx_93_Snd
| |
− | rom_ptr_z80 Sfx_94_Snd
| |
− | rom_ptr_z80 Sfx_95_Snd
| |
− | rom_ptr_z80 Sfx_96_Snd
| |
− | rom_ptr_z80 Sfx_97_Snd
| |
− | rom_ptr_z80 Sfx_98_Snd
| |
− | rom_ptr_z80 Sfx_99_Snd
| |
− | rom_ptr_z80 Sfx_9A_Snd
| |
− | rom_ptr_z80 Sfx_9B_Snd
| |
− | rom_ptr_z80 Sfx_9C_Snd
| |
− | rom_ptr_z80 Sfx_9D_Snd
| |
− | rom_ptr_z80 Sfx_9E_Snd
| |
− | rom_ptr_z80 Sfx_9F_Snd
| |
− | rom_ptr_z80 Sfx_A0_Snd
| |
− | rom_ptr_z80 Sfx_A1_Snd
| |
− | rom_ptr_z80 Sfx_A2_Snd
| |
− | rom_ptr_z80 Sfx_A3_Snd
| |
− | rom_ptr_z80 Sfx_A4_Snd
| |
− | rom_ptr_z80 Sfx_A5_Snd
| |
− | rom_ptr_z80 Sfx_A6_Snd
| |
− | rom_ptr_z80 Sfx_A7_Snd
| |
− | rom_ptr_z80 Sfx_A8_Snd
| |
− | rom_ptr_z80 Sfx_A9_Snd
| |
− | rom_ptr_z80 Sfx_AA_Snd
| |
− | rom_ptr_z80 Sfx_AB_Snd
| |
− | rom_ptr_z80 Sfx_AC_Snd
| |
− | rom_ptr_z80 Sfx_AD_Snd
| |
− | rom_ptr_z80 Sfx_AE_Snd
| |
− | rom_ptr_z80 Sfx_AF_Snd
| |
− | rom_ptr_z80 Sfx_B0_Snd
| |
− | rom_ptr_z80 Sfx_B1_Snd
| |
− | rom_ptr_z80 Sfx_B2_Snd
| |
− | rom_ptr_z80 Sfx_B3_Snd
| |
− | rom_ptr_z80 Sfx_B4_Snd
| |
− | rom_ptr_z80 Sfx_B5_Snd
| |
− | rom_ptr_z80 Sfx_B6_Snd
| |
− | rom_ptr_z80 Sfx_B7_Snd
| |
− | rom_ptr_z80 Sfx_B8_Snd
| |
− | rom_ptr_z80 Sfx_B9_Snd
| |
− | rom_ptr_z80 Sfx_BA_Snd
| |
− | rom_ptr_z80 Sfx_BB_Snd
| |
− | rom_ptr_z80 Sfx_BC_Snd
| |
− | rom_ptr_z80 Sfx_BD_Snd
| |
− | rom_ptr_z80 Sfx_BE_Snd
| |
− | rom_ptr_z80 Sfx_BF_Snd
| |
− | rom_ptr_z80 Sfx_C0_Snd
| |
− | rom_ptr_z80 Sfx_C1_Snd
| |
− | rom_ptr_z80 Sfx_C2_Snd
| |
− | rom_ptr_z80 Sfx_C3_Snd
| |
− | rom_ptr_z80 Sfx_C4_Snd
| |
− | rom_ptr_z80 Sfx_C5_Snd
| |
− | rom_ptr_z80 Sfx_C6_Snd
| |
− | rom_ptr_z80 Sfx_C7_Snd
| |
− | rom_ptr_z80 Sfx_C8_Snd
| |
− | rom_ptr_z80 Sfx_C9_Snd
| |
− | rom_ptr_z80 Sfx_CA_Snd
| |
− | rom_ptr_z80 Sfx_CB_Snd
| |
− | rom_ptr_z80 Sfx_CC_Snd
| |
− | rom_ptr_z80 Sfx_CD_Snd
| |
− | rom_ptr_z80 Sfx_CE_Snd
| |
− | rom_ptr_z80 Sfx_CF_Snd
| |
− | rom_ptr_z80 Sfx_D0_Snd
| |
− | rom_ptr_z80 Sfx_D1_Snd
| |
− | rom_ptr_z80 Sfx_D2_Snd
| |
− | rom_ptr_z80 Sfx_D3_Snd
| |
− | rom_ptr_z80 Sfx_D4_Snd
| |
− | rom_ptr_z80 Sfx_D5_Snd
| |
− | rom_ptr_z80 Sfx_D6_Snd
| |
− | rom_ptr_z80 Sfx_D7_Snd
| |
− | rom_ptr_z80 Sfx_D8_Snd
| |
− | rom_ptr_z80 Sfx_D9_Snd
| |
− | rom_ptr_z80 Sfx_DA_Snd
| |
− | rom_ptr_z80 Sfx_DB_Snd
| |
− | rom_ptr_z80 Sfx_DB_Snd
| |
− | rom_ptr_z80 Sfx_DB_Snd
| |
− | rom_ptr_z80 Sfx_DB_Snd
| |
− | rom_ptr_z80 Sfx_DB_Snd
| |
− | DriverPointersEnd:
| |
− | | |
− | UniversalVoiceBank:
| |
− | binclude "sound/uvb.bin"
| |
− | UniversalVoiceBankEnd:
| |
− | | |
− | align $8000
| |
− | dacBank0Start := *
| |
− | DacBank0:
| |
− | binclude "sound/dac_0.bin"
| |
− | if * > dacBank0Start + $8000
| |
− | fatal "dacBank0 must fit in $8000 bytes but was $\{*-dacBank0Start}. Try moving something to another bank."
| |
− | else
| |
− | ;message "dacBank0 has $\{$8000+dacBank0Start-*} bytes free at end."
| |
− | endif
| |
− | | |
− | align $8000
| |
− | bank1Start := *
| |
− | DacBank1:
| |
− | binclude "sound/dac_1.bin"
| |
− | align $8000
| |
− | if * > dacBank1Start + $8000
| |
− | fatal "dacBank1 must fit in $8000 bytes but was $\{*-dacBank1Start}. Try moving something to another bank."
| |
− | else
| |
− | ;message "dacBank1 has $\{$8000+dacBank1Start-*} bytes free at end."
| |
− | endif
| |
− | | |
− | align $8000
| |
− | bank2Start := *
| |
− | DacBank2:
| |
− | binclude "sound/dac_2.bin"
| |
− | if * > dacBank2Start + $8000
| |
− | fatal "dacBank2 must fit in $8000 bytes but was $\{*-dacBank2Start}. Try moving something to another bank."
| |
− | else
| |
− | ;message "dacBank2 has $\{$8000+dacBank2Start-*} bytes free at end."
| |
− | endif
| |
− | | |
− | align $8000
| |
− | bank0Start := *
| |
− | Bank0:
| |
− | binclude "sound/filler.bin"
| |
− | Mini_Boss_Snd:
| |
− | binclude "sound/miniboss.snd"
| |
− | Final_Boss_Snd:
| |
− | binclude "sound/f_boss.snd"
| |
− | if * > bank0Start + $8000
| |
− | fatal "bank0 must fit in $8000 bytes but was $\{*-bank0Start}. Try moving something to another bank."
| |
− | else
| |
− | ;message "bank0 has $\{$8000+bank0Start-*} bytes free at end."
| |
− | endif
| |
− | | |
− | align $8000
| |
− | bank1Start := *
| |
− | 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"
| |
− | if * > bank1Start + $8000
| |
− | fatal "bank1 must fit in $8000 bytes but was $\{*-bank1Start}. Try moving something to another bank."
| |
− | else
| |
− | ;message "bank1 has $\{$8000+bank1Start-*} bytes free at end."
| |
− | endif
| |
− | | |
− | align $8000
| |
− | bank2Start := *
| |
− | 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"
| |
− | if * > bank2Start + $8000
| |
− | fatal "bank2 must fit in $8000 bytes but was $\{*-bank2Start}. Try moving something to another bank."
| |
− | else
| |
− | ;message "bank2 has $\{$8000+bank2Start-*} bytes free at end."
| |
− | endif
| |
− | | |
− | align $8000
| |
− | bank3Start := *
| |
− | 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"
| |
− | if * > bank3Start + $8000
| |
− | fatal "bank3 must fit in $8000 bytes but was $\{*-bank3Start}. Try moving something to another bank."
| |
− | else
| |
− | ;message "bank3 has $\{$8000+bank3Start-*} bytes free at end."
| |
− | endif
| |
− | | |
− | align $8000
| |
− | soundBankStart := *
| |
− | SndBank:
| |
− | SegaPCMBank:
| |
− | SegaSnd:
| |
− | binclude "sound/sega.snd"
| |
− | Sfx_33_Snd:
| |
− | binclude "sound/sfx_34.snd"
| |
− | Sfx_34_Snd:
| |
− | binclude "sound/sfx_35.snd"
| |
− | Sfx_35_Snd:
| |
− | binclude "sound/sfx_36.snd"
| |
− | Sfx_36_Snd:
| |
− | binclude "sound/sfx_37.snd"
| |
− | Sfx_37_Snd:
| |
− | binclude "sound/sfx_38.snd"
| |
− | Sfx_38_Snd:
| |
− | binclude "sound/sfx_39.snd"
| |
− | Sfx_39_Snd:
| |
− | binclude "sound/sfx_3A.snd"
| |
− | Sfx_3A_Snd:
| |
− | binclude "sound/sfx_3B.snd"
| |
− | Sfx_3B_Snd:
| |
− | binclude "sound/sfx_3C.snd"
| |
− | Sfx_3C_Snd:
| |
− | binclude "sound/sfx_3D.snd"
| |
− | Sfx_3D_Snd:
| |
− | binclude "sound/sfx_3E.snd"
| |
− | Sfx_3E_Snd:
| |
− | binclude "sound/sfx_3F.snd"
| |
− | Sfx_3F_Snd:
| |
− | binclude "sound/sfx_40.snd"
| |
− | Sfx_40_Snd:
| |
− | binclude "sound/sfx_41.snd"
| |
− | Sfx_41_Snd:
| |
− | binclude "sound/sfx_42.snd"
| |
− | Sfx_42_Snd:
| |
− | binclude "sound/sfx_43.snd"
| |
− | Sfx_43_Snd:
| |
− | binclude "sound/sfx_44.snd"
| |
− | Sfx_44_Snd:
| |
− | binclude "sound/sfx_45.snd"
| |
− | Sfx_45_Snd:
| |
− | binclude "sound/sfx_46.snd"
| |
− | Sfx_46_Snd:
| |
− | binclude "sound/sfx_47.snd"
| |
− | Sfx_47_Snd:
| |
− | binclude "sound/sfx_48.snd"
| |
− | Sfx_48_Snd:
| |
− | binclude "sound/sfx_49.snd"
| |
− | Sfx_49_Snd:
| |
− | binclude "sound/sfx_4A.snd"
| |
− | Sfx_4A_Snd:
| |
− | binclude "sound/sfx_4B.snd"
| |
− | Sfx_4B_Snd:
| |
− | binclude "sound/sfx_4C.snd"
| |
− | Sfx_4C_Snd:
| |
− | binclude "sound/sfx_4D.snd"
| |
− | Sfx_4D_Snd:
| |
− | binclude "sound/sfx_4E.snd"
| |
− | Sfx_4E_Snd:
| |
− | binclude "sound/sfx_4F.snd"
| |
− | Sfx_4F_Snd:
| |
− | binclude "sound/sfx_50.snd"
| |
− | Sfx_50_Snd:
| |
− | binclude "sound/sfx_51.snd"
| |
− | Sfx_51_Snd:
| |
− | binclude "sound/sfx_52.snd"
| |
− | Sfx_52_Snd:
| |
− | binclude "sound/sfx_53.snd"
| |
− | Sfx_53_Snd:
| |
− | binclude "sound/sfx_54.snd"
| |
− | Sfx_54_Snd:
| |
− | binclude "sound/sfx_55.snd"
| |
− | Sfx_55_Snd:
| |
− | binclude "sound/sfx_56.snd"
| |
− | Sfx_56_Snd:
| |
− | binclude "sound/sfx_57.snd"
| |
− | Sfx_57_Snd:
| |
− | binclude "sound/sfx_58.snd"
| |
− | Sfx_58_Snd:
| |
− | binclude "sound/sfx_59.snd"
| |
− | Sfx_59_Snd:
| |
− | binclude "sound/sfx_5A.snd"
| |
− | Sfx_5A_Snd:
| |
− | binclude "sound/sfx_5B.snd"
| |
− | Sfx_5B_Snd:
| |
− | binclude "sound/sfx_5C.snd"
| |
− | Sfx_5C_Snd:
| |
− | binclude "sound/sfx_5D.snd"
| |
− | Sfx_5D_Snd:
| |
− | binclude "sound/sfx_5E.snd"
| |
− | Sfx_5E_Snd:
| |
− | binclude "sound/sfx_5F.snd"
| |
− | Sfx_5F_Snd:
| |
− | binclude "sound/sfx_60.snd"
| |
− | Sfx_60_Snd:
| |
− | binclude "sound/sfx_61.snd"
| |
− | Sfx_61_Snd:
| |
− | binclude "sound/sfx_62.snd"
| |
− | Sfx_62_Snd:
| |
− | binclude "sound/sfx_63.snd"
| |
− | Sfx_63_Snd:
| |
− | binclude "sound/sfx_64.snd"
| |
− | Sfx_64_Snd:
| |
− | binclude "sound/sfx_65.snd"
| |
− | Sfx_65_Snd:
| |
− | binclude "sound/sfx_66.snd"
| |
− | Sfx_66_Snd:
| |
− | binclude "sound/sfx_67.snd"
| |
− | Sfx_67_Snd:
| |
− | binclude "sound/sfx_68.snd"
| |
− | Sfx_68_Snd:
| |
− | binclude "sound/sfx_69.snd"
| |
− | Sfx_69_Snd:
| |
− | binclude "sound/sfx_6A.snd"
| |
− | Sfx_6A_Snd:
| |
− | binclude "sound/sfx_6B.snd"
| |
− | Sfx_6B_Snd:
| |
− | binclude "sound/sfx_6C.snd"
| |
− | Sfx_6C_Snd:
| |
− | binclude "sound/sfx_6D.snd"
| |
− | Sfx_6D_Snd:
| |
− | binclude "sound/sfx_6E.snd"
| |
− | Sfx_6E_Snd:
| |
− | binclude "sound/sfx_6F.snd"
| |
− | Sfx_6F_Snd:
| |
− | binclude "sound/sfx_70.snd"
| |
− | Sfx_70_Snd:
| |
− | binclude "sound/sfx_71.snd"
| |
− | Sfx_71_Snd:
| |
− | binclude "sound/sfx_72.snd"
| |
− | Sfx_72_Snd:
| |
− | binclude "sound/sfx_73.snd"
| |
− | Sfx_73_Snd:
| |
− | binclude "sound/sfx_74.snd"
| |
− | Sfx_74_Snd:
| |
− | binclude "sound/sfx_75.snd"
| |
− | Sfx_75_Snd:
| |
− | binclude "sound/sfx_76.snd"
| |
− | Sfx_76_Snd:
| |
− | binclude "sound/sfx_77.snd"
| |
− | Sfx_77_Snd:
| |
− | binclude "sound/sfx_78.snd"
| |
− | Sfx_78_Snd:
| |
− | binclude "sound/sfx_79.snd"
| |
− | Sfx_79_Snd:
| |
− | binclude "sound/sfx_7A.snd"
| |
− | Sfx_7A_Snd:
| |
− | binclude "sound/sfx_7B.snd"
| |
− | Sfx_7B_Snd:
| |
− | binclude "sound/sfx_7C.snd"
| |
− | Sfx_7C_Snd:
| |
− | binclude "sound/sfx_7D.snd"
| |
− | Sfx_7D_Snd:
| |
− | binclude "sound/sfx_7E.snd"
| |
− | Sfx_7E_Snd:
| |
− | binclude "sound/sfx_7F.snd"
| |
− | Sfx_7F_Snd:
| |
− | binclude "sound/sfx_80.snd"
| |
− | Sfx_80_Snd:
| |
− | binclude "sound/sfx_81.snd"
| |
− | Sfx_81_Snd:
| |
− | binclude "sound/sfx_82.snd"
| |
− | Sfx_82_Snd:
| |
− | binclude "sound/sfx_83.snd"
| |
− | Sfx_83_Snd:
| |
− | binclude "sound/sfx_84.snd"
| |
− | Sfx_84_Snd:
| |
− | binclude "sound/sfx_85.snd"
| |
− | Sfx_85_Snd:
| |
− | binclude "sound/sfx_86.snd"
| |
− | Sfx_86_Snd:
| |
− | binclude "sound/sfx_87.snd"
| |
− | Sfx_87_Snd:
| |
− | binclude "sound/sfx_88.snd"
| |
− | Sfx_88_Snd:
| |
− | binclude "sound/sfx_89.snd"
| |
− | Sfx_89_Snd:
| |
− | binclude "sound/sfx_8A.snd"
| |
− | Sfx_8A_Snd:
| |
− | binclude "sound/sfx_8B.snd"
| |
− | Sfx_8B_Snd:
| |
− | binclude "sound/sfx_8C.snd"
| |
− | Sfx_8C_Snd:
| |
− | binclude "sound/sfx_8D.snd"
| |
− | Sfx_8D_Snd:
| |
− | binclude "sound/sfx_8E.snd"
| |
− | Sfx_8E_Snd:
| |
− | binclude "sound/sfx_8F.snd"
| |
− | Sfx_8F_Snd:
| |
− | binclude "sound/sfx_90.snd"
| |
− | Sfx_90_Snd:
| |
− | binclude "sound/sfx_91.snd"
| |
− | Sfx_91_Snd:
| |
− | binclude "sound/sfx_92.snd"
| |
− | Sfx_92_Snd:
| |
− | binclude "sound/sfx_93.snd"
| |
− | Sfx_93_Snd:
| |
− | binclude "sound/sfx_94.snd"
| |
− | Sfx_94_Snd:
| |
− | binclude "sound/sfx_95.snd"
| |
− | Sfx_95_Snd:
| |
− | binclude "sound/sfx_96.snd"
| |
− | Sfx_96_Snd:
| |
− | binclude "sound/sfx_97.snd"
| |
− | Sfx_97_Snd:
| |
− | binclude "sound/sfx_98.snd"
| |
− | Sfx_98_Snd:
| |
− | binclude "sound/sfx_99.snd"
| |
− | Sfx_99_Snd:
| |
− | binclude "sound/sfx_9A.snd"
| |
− | Sfx_9A_Snd:
| |
− | binclude "sound/sfx_9B.snd"
| |
− | Sfx_9B_Snd:
| |
− | binclude "sound/sfx_9C.snd"
| |
− | Sfx_9C_Snd:
| |
− | binclude "sound/sfx_9D.snd"
| |
− | Sfx_9D_Snd:
| |
− | binclude "sound/sfx_9E.snd"
| |
− | Sfx_9E_Snd:
| |
− | binclude "sound/sfx_9F.snd"
| |
− | Sfx_9F_Snd:
| |
− | binclude "sound/sfx_A0.snd"
| |
− | Sfx_A0_Snd:
| |
− | binclude "sound/sfx_A1.snd"
| |
− | Sfx_A1_Snd:
| |
− | binclude "sound/sfx_A2.snd"
| |
− | Sfx_A2_Snd:
| |
− | binclude "sound/sfx_A3.snd"
| |
− | Sfx_A3_Snd:
| |
− | binclude "sound/sfx_A4.snd"
| |
− | Sfx_A4_Snd:
| |
− | binclude "sound/sfx_A5.snd"
| |
− | Sfx_A5_Snd:
| |
− | binclude "sound/sfx_A6.snd"
| |
− | Sfx_A6_Snd:
| |
− | binclude "sound/sfx_A7.snd"
| |
− | Sfx_A7_Snd:
| |
− | binclude "sound/sfx_A8.snd"
| |
− | Sfx_A8_Snd:
| |
− | binclude "sound/sfx_A9.snd"
| |
− | Sfx_A9_Snd:
| |
− | binclude "sound/sfx_AA.snd"
| |
− | Sfx_AA_Snd:
| |
− | binclude "sound/sfx_AB.snd"
| |
− | Sfx_AB_Snd:
| |
− | binclude "sound/sfx_AC.snd"
| |
− | Sfx_AC_Snd:
| |
− | binclude "sound/sfx_AD.snd"
| |
− | Sfx_AD_Snd:
| |
− | binclude "sound/sfx_AE.snd"
| |
− | Sfx_AE_Snd:
| |
− | binclude "sound/sfx_AF.snd"
| |
− | Sfx_AF_Snd:
| |
− | binclude "sound/sfx_B0.snd"
| |
− | Sfx_B0_Snd:
| |
− | binclude "sound/sfx_B1.snd"
| |
− | Sfx_B1_Snd:
| |
− | binclude "sound/sfx_B2.snd"
| |
− | Sfx_B2_Snd:
| |
− | binclude "sound/sfx_B3.snd"
| |
− | Sfx_B3_Snd:
| |
− | binclude "sound/sfx_B4.snd"
| |
− | Sfx_B4_Snd:
| |
− | binclude "sound/sfx_B5.snd"
| |
− | Sfx_B5_Snd:
| |
− | binclude "sound/sfx_B6.snd"
| |
− | Sfx_B6_Snd:
| |
− | binclude "sound/sfx_B7.snd"
| |
− | Sfx_B7_Snd:
| |
− | binclude "sound/sfx_B8.snd"
| |
− | Sfx_B8_Snd:
| |
− | binclude "sound/sfx_B9.snd"
| |
− | Sfx_B9_Snd:
| |
− | binclude "sound/sfx_BA.snd"
| |
− | Sfx_BA_Snd:
| |
− | binclude "sound/sfx_BB.snd"
| |
− | Sfx_BB_Snd:
| |
− | binclude "sound/sfx_BC.snd"
| |
− | Sfx_BC_Snd:
| |
− | binclude "sound/sfx_BD.snd"
| |
− | Sfx_BD_Snd:
| |
− | binclude "sound/sfx_BE.snd"
| |
− | Sfx_BE_Snd:
| |
− | binclude "sound/sfx_BF.snd"
| |
− | Sfx_BF_Snd:
| |
− | binclude "sound/sfx_C0.snd"
| |
− | Sfx_C0_Snd:
| |
− | binclude "sound/sfx_C1.snd"
| |
− | Sfx_C1_Snd:
| |
− | binclude "sound/sfx_C2.snd"
| |
− | Sfx_C2_Snd:
| |
− | binclude "sound/sfx_C3.snd"
| |
− | Sfx_C3_Snd:
| |
− | binclude "sound/sfx_C4.snd"
| |
− | Sfx_C4_Snd:
| |
− | binclude "sound/sfx_C5.snd"
| |
− | Sfx_C5_Snd:
| |
− | binclude "sound/sfx_C6.snd"
| |
− | Sfx_C6_Snd:
| |
− | binclude "sound/sfx_C7.snd"
| |
− | Sfx_C7_Snd:
| |
− | binclude "sound/sfx_C8.snd"
| |
− | Sfx_C8_Snd:
| |
− | binclude "sound/sfx_C9.snd"
| |
− | Sfx_C9_Snd:
| |
− | binclude "sound/sfx_CA.snd"
| |
− | Sfx_CB_Snd:
| |
− | binclude "sound/sfx_CB.snd"
| |
− | Sfx_CA_Snd:
| |
− | binclude "sound/sfx_CC.snd"
| |
− | Sfx_CB_Snd:
| |
− | binclude "sound/sfx_CD.snd"
| |
− | Sfx_CD_Snd:
| |
− | binclude "sound/sfx_CE.snd"
| |
− | Sfx_CE_Snd:
| |
− | binclude "sound/sfx_CF.snd"
| |
− | Sfx_CF_Snd:
| |
− | binclude "sound/sfx_D0.snd"
| |
− | Sfx_D0_Snd:
| |
− | binclude "sound/sfx_D1.snd"
| |
− | Sfx_D1_Snd:
| |
− | binclude "sound/sfx_D2.snd"
| |
− | Sfx_D2_Snd:
| |
− | binclude "sound/sfx_D3.snd"
| |
− | Sfx_D3_Snd:
| |
− | binclude "sound/sfx_D4.snd"
| |
− | Sfx_D4_Snd:
| |
− | binclude "sound/sfx_D5.snd"
| |
− | Sfx_D5_Snd:
| |
− | binclude "sound/sfx_D6.snd"
| |
− | Sfx_D6_Snd:
| |
− | binclude "sound/sfx_D7.snd"
| |
− | Sfx_D7_Snd:
| |
− | binclude "sound/sfx_D8.snd"
| |
− | Sfx_D8_Snd:
| |
− | binclude "sound/sfx_D9.snd"
| |
− | Sfx_D9_Snd:
| |
− | binclude "sound/sfx_DA.snd"
| |
− | Sfx_DA_Snd:
| |
− | binclude "sound/sfx_DB.snd"
| |
− | Sfx_DB_Snd:
| |
− | binclude "sound/sfx_DC.snd"
| |
− | | |
− | if * > soundBankStart + $8000
| |
− | fatal "soundBank must fit in $8000 bytes but was $\{*-soundBankStart}. Try moving something to another bank."
| |
− | else
| |
− | ;message "soundBank has $\{$8000+soundBankStart-*} bytes free at end."
| |
− | endif
| |
− | | |
− | ; end of 'ROM'
| |
− | if padToPowerOfTwo && (*)&(*-1)
| |
− | cnop -1,2<<lastbit(*-1)
| |
− | dc.b 0
| |
− | paddingSoFar := paddingSoFar+1
| |
− | else
| |
− | even
| |
− | endif
| |
− | if MOMPASS=2
| |
− | ; "About" because it will be off by the same amount that Size_of_Snd_driver_guess is incorrect (if you changed it), and because I may have missed a small amount of internal padding somewhere
| |
− | message "rom size is $\{*} bytes (\{*/1024.0} kb). About $\{paddingSoFar} bytes are padding. "
| |
− | endif
| |
− | </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 PlayMusic routine, locate:
| |
− | <asm>
| |
− | ; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||
| |
− | ; If Music_to_play is clear, move d0 into Music_to_play,
| |
− | ; else move d0 into Music_to_play_2.
| |
− | ; sub_135E:
| |
− | PlayMusic:
| |
− | tst.b (Music_to_play).w
| |
− | bne.s +
| |
− | move.b d0,(Music_to_play).w
| |
− | rts
| |
− | +
| |
− | move.b d0,(Music_to_play_2).w
| |
− | rts
| |
− | ; End of function PlayMusic
| |
− | </asm>
| |
− | and we will replace it with '''this''' code:
| |
− | <asm>
| |
− | ; ---------------------------------------------------------------------------
| |
− | ; Subroutine to play a music track
| |
− | ; ---------------------------------------------------------------------------
| |
− | | |
− | ; ||||||||||||||| S U B R O U T I N E |||||||||||||||||||||||||||||||||||||||
| |
− | | |
− | | |
− | PlayMusic:
| |
− | cmpi.w #$FB,d0
| |
− | blt.s ++
| |
− | bhi.s +
| |
− | move #8,d0
| |
− | jmp SetTempo
| |
− | + cmpi.w #$FC,d0
| |
− | bne.s +
| |
− | clr.w d0
| |
− | jmp SetTempo
| |
− | | |
− | stopZ80
| |
− | move.b d0,($A01C0A).l
| |
− | startZ80
| |
− | rts
| |
− | ; End of function PlaySound
| |
− | <asm>
| |
| | | |
− | ===sound playback routines===
| + | {{S2Howtos}} |
| + | |{{PAGENAME}}]] |